Re: [問題] 關於九九乘法的小變形..想不出來..

看板Programming作者 (喲)時間15年前 (2010/12/05 08:09), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/4 (看更多)
※ 引述《shinmeteor (shin)》之銘言: : ※ [本文轉錄自 java 看板 #1C-bBl1v ] : 作者: shinmeteor (shin) 看板: java : 標題: [問題] 關於九九乘法的小變形..想不出來.. : 時間: Sat Dec 4 22:40:43 2010 : 不知道plsql可以在這裡發問嗎?有專版嗎?有誤po請跟我說一下,會馬上刪除,謝謝。 : 請問一下@@ : DECLARE : v_m number(5):=0; : v_col number(5):=9; : v_String VARCHAR2(100):=''; : v_z number(5):=9; : BEGIN 先看清楚結構,第一層迴圈對應輸出的每一列,第二層回圈對應第一個乘數, 第二個迴圈控制第二個乘數,並且產生結果. : LOOP : FOR v_i IN 1 .. v_z : LOOP : FOR v_j IN (1+v_m) ..(v_col+v_m) : LOOP : IF v_j <= v_z THEN : v_String:=v_String||' : '||v_j||'*'||v_i||'='||LPAD((v_i*v_j),2,'0'); : END IF; : END LOOP; : DBMS_OUTPUT.PUT_LINE(v_String); : v_String:=''; : v_z := v_z-1; : END LOOP; : DBMS_OUTPUT.PUT_LINE(v_String); : v_m:=v_m+v_col; : EXIT WHEN v_m >=9; : END LOOP; : END; : 她顯示是.. : 1*1=01 2*1=02 3*1=03 4*1=04 5*1=05 6*1=06 7*1=07 8*1=08 9*1=09 : 1*2=02 2*2=04 3*2=06 4*2=08 5*2=10 6*2=12 7*2=14 8*2=16 : 1*3=03 2*3=06 3*3=09 4*3=12 5*3=15 6*3=18 7*3=21 : 1*4=04 2*4=08 3*4=12 4*4=16 5*4=20 6*4=24 : 1*5=05 2*5=10 3*5=15 4*5=20 5*5=25 : 1*6=06 2*6=12 3*6=18 4*6=24 : 1*7=07 2*7=14 3*7=21 : 1*8=08 2*8=16 : 1*9=09 這情況分二步驟看比較簡單. 首先是把輸出行數推移成 1*1=01 2*1=02 3*1=03 4*1=04 5*1=05 6*1=06 7*1=07 8*1=08 9*1=09 1*2=02 2*2=04 3*2=06 4*2=08 5*2=10 6*2=12 7*2=14 8*2=16 1*3=03 2*3=06 3*3=09 4*3=12 5*3=15 6*3=18 7*3=21 1*4=04 2*4=08 3*4=12 4*4=16 5*4=20 6*4=24 1*5=05 2*5=10 3*5=15 4*5=20 5*5=25 1*6=06 2*6=12 3*6=18 4*6=24 1*7=07 2*7=14 3*7=21 1*8=08 2*8=16 1*9=09 想想看,做這件事情要改哪裡? 要在什麼位置加入一段程式碼,隨著每一列列數而加入相對長度的空格? 是在第一層迴圈內前面,還是第二層迴圈內前面,還是第三層? . . . . . . 第二步是,如果已經把每一列推移過去,看每一行, v_j 沒有改變, 而 v_i 要做一些調整. 第二列每個 v_i 加一,第三列每個 v_i 加二等等. 這裡要加的不是一段程式而已,在 FOR v_i IN 1 .. v_z 範圍要改變, 而範圍改變必須參考到第一步每一列平移了多少段空格的資訊. 所以你要在第一層迴圈控制一個變數,然後讓第二層迴圈參考到那個變數. : 如果我想要這樣,該怎麼做呢...請大家提點一下迷津@@a : 1*1=01 2*1=02 3*1=03 4*1=04 5*1=05 6*1=06 7*1=07 8*1=08 9*1=09 : 2*2=04 3*2=06 4*2=08 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18 : 3*3=09 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27 : 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36 : 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45 : 6*6=36 7*6=42 8*6=48 9*6=54 : 7*7=49 8*7=56 9*7=63 : 8*8=64 9*8=72 : 9*9=81 : 頭快搞混了...謝謝各位>< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.210.220

12/07 11:28, , 1F
<(_ _)> y大永遠都有辦法不顧眾議標新立異
12/07 11:28, 1F

12/07 19:57, , 2F
對啊,跟大家相同有什麼好玩的?就是要不同啊
12/07 19:57, 2F
文章代碼(AID): #1C-jWmrX (Programming)
文章代碼(AID): #1C-jWmrX (Programming)