2017年4月2日 星期日

Z2AY7M3 練習-5 (17題題單及參考-2)

4/10(一)測驗題單 (題目名加上連結的表示範例完成)
假設由文字方塊輸入,呼叫 Function MyPxx( S As String ) As String後傳回要輸出的字串
以下只有M5P11附主程式部份,其餘類似

105模擬
M5P11
105模擬
M5P22
105模擬
M5P42
105正式
F5P11
105正式
F5P12
105正式
F5P21
105正式
F5P22
104模擬
M4P12
數學問題:N!尾數的0
104模擬
M4P21
其他:計程車費率計算
104模擬
M4P42
其他:數字反轉後相加
104正式
F4P11
生活問題:電梯電費計算系統
104正式
F4P22
數學問題:最大公約數計算
104正式
F4P31
其他:計算位元為1的個數
103模擬
M3P11
數學問題:判斷是否為質數
103模擬
M3P12
數學問題:解二元一次聯立方程式之根
103模擬
M3P21
103模擬
M3P22
編碼處理:凱撒密碼

======  105正式 F5P11 字串問題:計算字數

    Function F5P11(ByVal s As String) As String
        ttrim(s, "  ", " ") '呼叫 ttrim自訂副程式,將多個空格改為1個
        Dim dat() = s.Split(" ")
        Return dat.Length
    End Function
  Sub ttrim(ByRef s As String, ByVal a As String, ByVal b As String)
        s = Trim(s)  ' trim是內建函式,去首尾的空白
        Do While (InStr(s, "  ") > 0) '有兩個空白傳回值>0
            s = s.Replace("  ", " ")
        Loop
  End Sub
=====輸入範例
This is a sample file.
Hello World!!
Hi!
Bigtable timestamps are integers.

=====輸出範例
5
2
1
4
===============

======   ' 105正式 P12:摩斯電碼
   ' 本題 摩斯字串 對照 0~4 、 5~9
    ' 以 Array.IndexOf( )函數查找即可
  Dim ms() As String = {"-----", ".----", "..---", "...--", "....-",
                        ".....", "-....", "--...", "---..", "----."}
    Function F5P12(ByVal s As String) As String
        F5P12 = ""
        ttrim(s, "  ", " ") '去首尾空白及中間2個以上空白換成1個
        Dim dat() = s.Split(" ")
        For Each m In dat
            F5P12 &= Array.IndexOf(ms, m)
        Next
   End Function

  Sub ttrim(ByRef s As String, ByVal a As String, ByVal b As String)
        s = Trim(s)
        Do While (InStr(s, "  ") > 0)
            s = s.Replace("  ", " ")
        Loop
  End Sub
=====輸入範例
.---- ..--- ...--
....- ..... -....
--... ---.. ----.
.---- .---- -----

----- .---- ..--- ...-- ....- ..... -.... --... ---.. ----.
=====輸出範例
123
456
789
110
0123456789
===============


======   ' 105正式 P21:網段ID
    Function F5P21(ByVal s As String) As String
       Dim a, b As Integer
        Dim p As Integer = InStr(s, "/")
        Dim sa() = Mid(s, 1, p - 1).Split(".")
        Dim sb() = Mid(s, p + 1).Split(".")
        P21 = ""
        For j = 0 To 3   ' IP分4段,以.隔開
            a = sa(j)
            b = sb(j)
            If j > 0 Then P21 &= "."
            P21 &= (a And b) '直接以 And 做 bit運算
       Next
   End Function
=====輸入範例
139.175.153.252/255.255.0.0
192.168.10.65/255.255.255.224
10.240.168.19/255.255.192.0
172.16.115.65/255.255.254.0

192.168.168.19/255.255.255.240
=====輸出範例
139.175.0.0
192.168.10.64
10.240.128.0
172.16.114.0
192.168.168.16
===============

======   ' 105正式 P22:最大公約數計算
    Function F5P22(ByVal s As String) As String
       Dim dat() = s.Split(",") '以空白分割
        Dim g As Integer
        Dim Ans = 1
        For j = 0 To UBound(dat) - 1   ' 兩兩求gcd,所有中 找最大
            For k = j + 1 To UBound(dat)
                g = gcd(dat(j), dat(k))
                If g > Ans Then Ans = g
            Next
        Next j
        Return Ans
    End Function
    Function gcd(ByVal a As Integer, ByVal b As Integer) As Integer
        Dim r As Integer = a Mod b
        Do Until r = 0
            a = b
            b = r
            r = a Mod b
        Loop
        Return b
    End Function
=====輸入範例
10,20,30,40
125,15,25
8,12
24,60,36
2,65535

2,3,4,5,6
=====輸出範例
20
25
4
12
1
3
===============

Related Posts:

  • 萬球同心移位( VB參考)' 測試資料改為第1行為 t 組,0<t<9,接著每組 第1列n  m ,接著 m列 ' 有n個球編號0~n-1{ 3<n<5*10^5},先將n個球依順時鐘圍成一圈 ' m個指令F A B 或R A B {2<m<10^3} ' F A… Read More
  • 萬球同心移位之章 最後輸出 0的逆鄰及順鄰 Rlink[0]、Flink[0] 即 1 3 當然若 A B同一編號不處理,A已位於要移至之處也不需處理… Read More
  • 商競103M-P31是否為樹這是依商業技藝競賽程式103年模擬題第3題子題1稍微修改 資料檔第1列 一個數字 n ,代表 n 組資料{0<n<10},接著每組資料一列 每列是一個圖形的所有「邊」以空白隔開 ,每一個「邊」是由兩數字以逗號連接 判斷這個圖形是否為一棵樹,是印T否印F 輸入… Read More
  • 商競104F-P42最小成本生成樹這是依商業技藝競賽程式104年正式題第4題子題2稍微修改資料檔第1列 一個數字 n ,代表 n 組資料,接著每組資料一列每一列為一個圖形所有「邊」以空格隔開,「邊」由3個以逗號隔開的數字組成{2個節點及成本}每組資料印出1個數字,算出圖形的最小成本生成樹的成本。 輸入… Read More
  • 商競104F-P41二搜+後巡這是依商業技藝競賽程式104年正式題第4題子題1稍微修改 資料檔第1列 一個數字 n ,代表 n 組資料,接著每組資料二列 每組的第1列一個數字x,每組第2列 x 個數字以逗號隔開 將讀入的 x 數字建成二元搜尋樹,然後依二元樹的後序拜訪 印出 依後序巡訪列印的順序,第1棵樹的輸… Read More

0 意見:

張貼留言