麻辣家族討論版版's Archiver

adrian_9832 發表於 2021-11-24 15:23

雙重 for loop 請教印星星

請教 板友  怎用 雙重的 for 迴圈   來 做到畫面 的星星 箭嘴?

luhpro 發表於 2021-11-26 00:21

[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]

准提部林 發表於 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

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117871&ptid=23499]3#[/url] [i]准提部林[/i] [/b]


    請問大大 如果 改成 debug.print 來看 要怎改??

adrian_9832 發表於 2021-12-3 16:09

[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 中 這個是怎麼理解?

adrian_9832 發表於 2021-12-3 16:42

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117871&ptid=23499]3#[/url] [i]准提部林[/i] [/b]


    請問有 DEBUG.PRINT 的版本嗎

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供