[問題] 兩陣列值比較大小

看板C_and_CPP作者 (貓王好帥)時間15年前 (2009/07/06 10:28), 編輯推噓4(4021)
留言25則, 5人參與, 最新討論串1/1
比如說 f[]=1,3,5,7,9 g[]=2,3,4,7,8 f[]中比g[0]大的有f[1]~f[4],比g[1]大的有f[2]~f[4]... 所以答案是4+3+3+1+1=12 可是寫的程式跑不出來,想上來問問我的想法那裡有問題 sum累加就是我要的答案 i,j拿來計數用 do{ for(i=0;i<5;i++){ if(f[i]>g[j]) sum+=1; else i++; } j++; }while(j<5); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.29.212.180 ※ 編輯: Qoo1027 來自: 163.29.212.180 (07/06 10:28)

07/06 10:30, , 1F
j有初始=0 sum有初始=0嘛?
07/06 10:30, 1F

07/06 10:31, , 2F
乍看之下覺得你else是多餘的 去掉看看對不對
07/06 10:31, 2F

07/06 10:31, , 3F
有...這些都有作,所以不列出來了
07/06 10:31, 3F

07/06 10:32, , 4F
else拿來判斷f[i]沒有大於g[j]的情況
07/06 10:32, 4F

07/06 10:35, , 5F
沒大於不用管他不是嗎? 你for還是會幫你做i++
07/06 10:35, 5F

07/06 10:35, , 6F
喔喔...也對歐...
07/06 10:35, 6F

07/06 10:40, , 7F
答案還是不正確,差了4
07/06 10:40, 7F

07/06 10:55, , 8F
我自己run一次結果是對的 既然你ij有initialize=0
07/06 10:55, 8F

07/06 10:56, , 9F
問題應該在sum是不是有initialize=0
07/06 10:56, 9F

07/06 10:57, , 10F
當然else後面還是要去掉~~
07/06 10:57, 10F

07/06 10:59, , 11F
結果對加一,做do-while之前有初始i,j,sum為0應該就ok
07/06 10:59, 11F

07/06 11:12, , 12F
初始化都有作...可是結果不對...還是我電腦壞了
07/06 11:12, 12F

07/06 11:17, , 13F
我run也是12.... 你把整個code貼到置底連結 的最後一個波一下
07/06 11:17, 13F

07/06 12:41, , 14F
因為我在scanf後面加上\n,scanf("%d\n",&f[n])...所以錯了
07/06 12:41, 14F

07/06 12:41, , 15F
不過有人知道為什麼加上去會錯嗎?
07/06 12:41, 15F

07/06 13:46, , 16F
為啥你想寫換行 在scanf裡面
07/06 13:46, 16F

07/06 13:52, , 17F
可能還不是很熟,所以想說每個值輸入完就換行...orz
07/06 13:52, 17F


07/06 14:50, , 19F
另外, 可以考慮把while loop的部分換成for loop
07/06 14:50, 19F

07/06 14:52, , 20F
兩種loop做的事是一樣的, 只是程式碼簡潔一點
07/06 14:52, 20F

07/06 14:53, , 21F
for(i = 0; i < 5; i++)
07/06 14:53, 21F

07/06 14:53, , 22F
for( j = 0; j < 5; j++)
07/06 14:53, 22F

07/06 14:54, , 23F
if( f[j] > g[i] ) sum +=1;
07/06 14:54, 23F

07/06 14:56, , 24F
如果陣列的數字已排序好, 可以有更簡潔的程式碼
07/06 14:56, 24F

07/06 16:15, , 25F
喔喔,我了解了,謝謝
07/06 16:15, 25F
文章代碼(AID): #1AKM4oQs (C_and_CPP)