[問題] 請問這樣的寫法錯在哪裡呢?

看板C_and_CPP作者 (空)時間13年前 (2011/07/02 09:12), 編輯推噓6(6024)
留言30則, 9人參與, 最新討論串1/1
各為前輩大家好 我宣告一個二維矩陣 並將其令值 想要寫出如果矩陣的位置為(1,1)或(2,2)就不印值 這樣寫哪裡錯呢? int x[3][3]={1,2,3,4,5,6,7,8,9},i,j; for(i=0;i<=2;i++) { for(j=0;j<=2;j++) { if((i!=1 && j!=1) || (i!=2 && j!=2)) cout << x[i][j] << i << j << endl; } } 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.23.44.25

07/02 09:41, , 1F
if condition not match what you want
07/02 09:41, 1F

07/02 09:44, , 2F
我知道是IF出了問題,但要如何改才會是正確的呢?
07/02 09:44, 2F

07/02 09:45, , 3F
if((i==1)&&(j==1)||(i==2)&&(j==2)) continue;
07/02 09:45, 3F

07/02 09:45, , 4F
cout << x[i][j] << i << j << endl;
07/02 09:45, 4F

07/02 09:45, , 5F
or
07/02 09:45, 5F

07/02 09:46, , 6F
if((i==1)&&(j==1)||(i==2)&&(j==2)) {;}
07/02 09:46, 6F

07/02 09:46, , 7F
else {cout << x[i][j] << i << j << endl; }
07/02 09:46, 7F

07/02 09:46, , 8F
or
07/02 09:46, 8F

07/02 09:50, , 9F
use deMorgan to change (this is not good choice)
07/02 09:50, 9F

07/02 09:51, , 10F
謝謝S大,請問一下為什麼我的寫法會有錯誤呢?
07/02 09:51, 10F

07/02 10:01, , 11F
當(1,1)時 第一個為假 但第2個為真 所以還是會去跑cout
07/02 10:01, 11F

07/02 10:01, , 12F
想到什麼就寫什麼, 不要想迂迴著做, 這樣寫的人難抓錯
07/02 10:01, 12F

07/02 10:01, , 13F
看的人也痛苦, !提出去問題就很明顯了
07/02 10:01, 13F

07/02 10:26, , 14F
樓上意思我不太懂...我是想到什麼就寫什麼阿
07/02 10:26, 14F

07/02 10:27, , 15F
"如果矩陣的位置為(1,1)或(2,2)就不印值", 那麼程式碼
07/02 10:27, 15F

07/02 10:28, , 16F
應該出現(i==1 && j==1)、(i==2 && j==2)要 invert也
07/02 10:28, 16F

07/02 10:28, , 17F
是放外面或是用else做掉, 哪會像你這樣做...
07/02 10:28, 17F

07/02 10:29, , 18F
你多想一步就是多錯一步
07/02 10:29, 18F

07/02 10:38, , 19F
哈哈,love大說的對;我是第一個想法怎麼沒看到break
07/02 10:38, 19F

07/02 10:59, , 20F
i!=1 && j!=1 這是MATLAB的寫法吧 XD
07/02 10:59, 20F

07/02 12:33, , 21F
謝謝LOVE大指教
07/02 12:33, 21F

07/02 12:56, , 22F
也不是什麼 MATLAB 的寫法 是根本整個邏輯就反了...
07/02 12:56, 22F

07/02 13:47, , 23F
如果執意要反著寫~那要改成下面這樣,當作是邏輯運算
07/02 13:47, 23F

07/02 13:47, , 24F
if((i!=1 || j!=1) && (i!=2 || j!=2))
07/02 13:47, 24F

07/02 17:40, , 25F
可以這樣寫if(&x[i][j]!=&x[1][1]&&(&x[i][j]!=&x[2][2]))
07/02 17:40, 25F

07/02 18:01, , 26F
這樣應該不會錯了...
07/02 18:01, 26F

07/02 19:18, , 27F
感謝bes大,原來如此阿...
07/02 19:18, 27F

07/02 20:37, , 28F
話說S大 應該不需要{}吧...
07/02 20:37, 28F

07/03 02:33, , 29F
用兩個if 去break loop不是比較清楚嗎?
07/03 02:33, 29F

07/03 02:33, , 30F
或者用switch
07/03 02:33, 30F
文章代碼(AID): #1E3d29eM (C_and_CPP)