標題:
雙重 for loop 請教印星星
[打印本頁]
作者:
adrian_9832
時間:
2021-11-24 15:23
標題:
雙重 for loop 請教印星星
請教 板友 怎用 雙重的 for 迴圈 來 做到畫面 的星星 箭嘴?
作者:
luhpro
時間:
2021-11-26 00:21
本帖最後由 luhpro 於 2021-11-26 00:26 編輯
請教 板友 怎用 雙重的 for 迴圈 來 做到畫面 的星星 箭嘴?
adrian_9832 發表於 2021-11-24 15:23
其實這可以看成單純的數學計算 :
1. 從左到右共8欄 : iI = 1 to 8
2. :從上到下有星號的列號依序為: 3 to 3, 2 to 4, 1 to 5, 3 to 3, 3 to 3.....
故而 起列 為 3, 2, 1, 3, 3......
而末列為 : 3, 4, 5, 3, 3......
可以明顯區分為4以下(分別各增減1) 及 3以上(都是3) 兩個區塊算式
則可以得下式 :
起列 :(下式貼到即時運算視窗執行可知算式結果)
For iI = 1 To 8: iJ = -(4 - iI) * (iI < 4) - (iI > 3) * 3: Debug.Print iI, iJ: Next
而末列則為 :
For iI = 1 To 8: iJ = -(2 + iI) * (iI < 4) - (iI > 3) * 3: Debug.Print iI, iJ: Next
綜合上述則可得 :
Sub nn()
Dim iI%, iJ%, iK%
Range(Cells(1, 1), Cells(5, 8)).ClearContents ' 清除星號
For iI = 1 To 8
iK = (iI > 3) * 3 ' 減號後面的算式
For iJ = -(4 - iI) * (iI < 4) - iK To -(2 + iI) * (iI < 4) - iK
Cells(iJ, iI) = "*"
Next iJ
Next iI
End Sub
複製代碼
[attach]34441[/attach]
作者:
准提部林
時間:
2021-11-26 10:50
Sub TEST_A1()
Dim R%, Rx%, C%, Cx%, j%
R = 5: C = 8: Cx = Int(R / 2) + 1
For j = 1 To C
Rx = Cx - j + 1: If Rx < 1 Then Rx = Cx
Cells(Rx, j).Resize(R - Rx * 2 + 2) = "*"
Next j
End Sub
作者:
adrian_9832
時間:
2021-12-3 08:52
謝謝兩位大大的指導!
作者:
adrian_9832
時間:
2021-12-3 16:08
回復
3#
准提部林
請問大大 如果 改成 debug.print 來看 要怎改??
作者:
adrian_9832
時間:
2021-12-3 16:09
回復
2#
luhpro
(iI < 4) - iK
請問 在FOR LOOP 中 這個是怎麼理解?
作者:
adrian_9832
時間:
2021-12-3 16:42
回復
3#
准提部林
請問有 DEBUG.PRINT 的版本嗎
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)