雙重 for loop 請教印星星
請教 板友 怎用 雙重的 for 迴圈 來 做到畫面 的星星 箭嘴? [i=s] 本帖最後由 luhpro 於 2021-11-26 00:26 編輯 [/i][quote]請教 板友 怎用 雙重的 for 迴圈 來 做到畫面 的星星 箭嘴?
[size=2][color=#999999]adrian_9832 發表於 2021-11-24 15:23[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117837&ptid=23499][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote]
其實這可以看成單純的數學計算 :
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
綜合上述則可得 :[code]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[/code][attach]34441[/attach] 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 謝謝兩位大大的指導! [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117871&ptid=23499]3#[/url] [i]准提部林[/i] [/b]
請問大大 如果 改成 debug.print 來看 要怎改?? [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117866&ptid=23499]2#[/url] [i]luhpro[/i] [/b]
(iI < 4) - iK
請問 在FOR LOOP 中 這個是怎麼理解? [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117871&ptid=23499]3#[/url] [i]准提部林[/i] [/b]
請問有 DEBUG.PRINT 的版本嗎
頁:
[1]