- 最後登錄
- 2024-1-11
- 在線時間
- 17 小時
- 註冊時間
- 2006-4-5
- 閱讀權限
- 30
- 精華
- 0
- UID
- 161318
- 帖子
- 749
- 積分
- 1392 點
- 潛水值
- 15632 米
| 成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。 本帖最後由 ahway9988 於 2011-10-26 10:50 AM 編輯
第一條太簡單了懶得寫
但第二條有點意思,要認真來還是有難度,程式上面不是問題,而是有用到了一些數學方面的問題
這裡提供一點寫法,看不懂請再發問...
不好意思,小的使用VB6,需自行轉換,請見諒-
- Private Sub Command1_Click()
- '請自行拉開一個可以容納邊長為49字元的Text1物件大小
- Dim n As Variant '邊長
- Dim w As Double '迴圈-圖形上的橫向位置
- Dim h As Double '迴圈-圖形上的直向位置
- Dim c As Double '在圖形橫向的菱形頂點的位置
- 'Text1.MultiLine = True '這行我不會設,請在Text1物件MultiLine屬性上直接改成True (接受多行文字)
- 'Text1.ScrollBars = 2 '這行我不會設,請在Text1物件ScrollBars屬性上直接改成2 (垂直捲軸)
- Text1.FontSize = 9
- Text1.MaxLength = 0 'Text1不限字數
- n = InputBox("請輸入n=?", "InputBox訊息", 5)
- If n = Cancel Then Exit Sub
- n = Int(Val(n))
- If n < 5 Or n > 49 Then MsgBox "輸入的值不符合要求,請重新輸入!", vbOKOnly, "訊息": Exit Sub
- c = (1 + n) / 2 '求中點位置(菱形頂點):n為單數會是正中間的位置,偶數則會得到一個小數點為0.5並且表示為整數部份與其加1的位置
- For h = 1 To n
- For w = 1 To n
- If h <= c Then 'h(直向)仍在直向的中點位置以上時則...
- If Abs(w - c) >= h - 1 Then 'w(橫向)位置與中點的距離如果>=根據由h相對取得的大小(由小變大)
- Text1.Text = Text1.Text & "*"
- Else
- Text1.Text = Text1.Text & " "
- End If
- Else 'h(直向)如超過直向的中點位置時則...
- If Abs(w - c) >= n - h Then ''w(橫向)位置與中點的距離如果>=根據由h相對取得的大小(由大變小)
- Text1.Text = Text1.Text & "*"
- Else
- Text1.Text = Text1.Text & " "
- End If
- End If
- Next
- Text1.Text = Text1.Text & vbCrLf
- Next
- Text1.Text = Text1.Text & vbCrLf '再輸入一行空格以便可以區開重覆貼上的圖形
- End Sub
複製代碼 我是很想用IIf(),跟With與其它簡化程式的用法,但怕您看不懂,寫得一長串但還請務必(大略)看過,千萬不要不看,我也寫好久了... |
|