Re: [問題] 關於九九乘法的小變形..想不出來..
※ 引述《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
12/07 11:28, 1F
→
12/07 19:57, , 2F
12/07 19:57, 2F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章