2011年1月1日 星期六

菱形數字方塊

是寫一程式讀取"in.txt"之數字印出菱形數字方塊,其形狀是由一群小於該數的數字包圍而成,輸出至"out.txt"‧例如:輸入5則輸出形狀為
    1
   121
  12321
 1234321
123454321
 1234321
  12321
   121
    1
輸入2則形狀為
 1
121
 1


參照 -> http://chscvb.blogspot.com/2010/01/20100121.html

9 則留言:

  1. Private Sub Form_Activate()

    Open App.Path & "\in.txt" For Input As #1
    Input #1, n
    Close


    Open App.Path & "\out.txt" For Output As #2
    For i = 1 To n

    ans = ans & i

    pans = ans
    Do While Len(pans) < n
    pans = " " & pans
    Loop

    If i >= 2 Then tmp = i - 1 & tmp

    Print #2, pans & tmp

    Next i


    For i = 1 To n - 1
    pans = " " & Mid(pans, 1, n - 1)
    tmp = Mid(tmp, 2, n - 2)
    Print #2, pans & tmp
    Next i
    Close #2

    End Sub



    '#####################
    1/1 新年快樂囉~

    想說 今天閒著 就來一題吧

    回覆刪除
  2. arro好,
    好像從新一年的開始,還有些心不在焉,對不起,前天看到這篇就想回了的說。
    目前又加入了兩個隊員,詳細的規矩,等下星期的社課的時候說吧,當然,也是會慢慢修正的,如果有不順的地方的話。
    這題是迴圈思考題,做法有非常多,可以自己也想想可以想出幾種方式,練一練不同的思考。
    這題你作的是正確,只有一個小地方「tmp = i - 1 & tmp 」改成「ttmp = (i - 1) & tmp 」會好些,要好好掌握程式,而不要太靠著「預設值」。
    另外,你定義變數的名字,可以在「簡單」與「有意義」之間取得一個平衡。你這題用ans,pans,tmp有些怪怪的。
    熊掌

    回覆刪除
  3. 真的會不見...



    定義變數這部分我也很想改進。

    好像是我英文比較差吧,有時候會擠不出適當的單字來當變數

    只好用了些簡單的字母組合來當變數了

    這樣子好像久了自己也會看不懂

    回覆刪除
  4. Dim A As Integer, C As Integer
    Dim B As String, X As String
    Private Sub Form_Load()
    Me.Hide

    Open App.Path & "\in.txt" For Input As #1
    Input #1, A
    Close #1

    Open App.Path & "\out.txt" For Output As #2
    C = 1
    X = ""
    For i = 1 To A

    For j = 1 To (A - C)
    B = B & " "
    Next j

    Dim P(99) As String
    P(C) = B & X & C & StrReverse(X)


    Print #2, B & X & C & StrReverse(X)
    X = X & C
    C = C + 1
    B = ""
    Next i

    For j = (A - 1) To 1 Step -1
    Print #2, P(j)
    Next j

    Close #2

    End
    End Sub

    回覆刪除
  5. 佑好,
    1.歡迎加入程式隊,除了有企圖心之外,還要有耐心哦,一年的訓練過程,會有些低潮的時候,要記住現在這個想參加的心,將向上的心,reset。
    2.程式OK。但是,Print #2, B & X & C & StrReverse(X) 這行可以改成print #2,p(c) 可以將重複的計算省略一次。
    3.這題用陣列記住前半的結果,再反序放出來,很好,而且不容易出錯。
    熊掌

    回覆刪除
  6. Private Sub Form_Load()
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, que

    i = 1

    If que < 1 Then End

    Do Until i = 0




    Add = i

    For k = i - 1 To 1 Step -1
    Add = k & Add
    Next k

    For j = que - i To 1 Step -1
    Add = " " & Add
    Next j

    For k = i - 1 To 1 Step -1
    Add = Add & k
    Next k

    Print #2, Add

    If i = que Then head = True
    If head = True Then i = i - 1 Else i = i + 1
    Loop



    Close #2
    Close #1
    End
    End Sub

    回覆刪除
  7. Jimmer好,
    程式正確。乍看有些複雜,但是沒問題。
    程式比賽的輸入以正確資料為主,如果題目沒有要求,不用處理錯誤輸入。
    熊掌ipad

    回覆刪除
  8. Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, n
    Call A1(n)
    Close
    Close
    End
    End Sub

    Sub A1(n)
    Dim SP$, ans$
    For i = 1 To n: SP = SP & " ": Next

    For i = 1 To n
    SP = Left(SP, Len(SP) - 1)
    ans = ans & i
    ans2 = Left(ans, i - 1)
    ans3 = ""
    For j = Len(ans2) To 1 Step -1: m = Mid(ans2, j, 1): ans3 = ans3 & m: Next
    Print #2, SP & ans & ans3
    Next

    For i = 1 To n - 1
    SP = SP & " "
    ans = Left(ans, Len(ans) - 1)
    ans3 = Right(ans3, Len(ans3) - 1)
    Print #2, SP & ans & ans3
    Next
    End Sub

    12:23
    久沒做這種圖形式的輸出了

    回覆刪除
  9. 作者已經移除這則留言。

    回覆刪除