- ベストアンサー
if文の判定条件に配列
2次元配列(ここではa[M][N]とします)の値が全て0の時にだけある文章を実行したいのですが、 if(for(i=0; i<M; i++){ for(j=0; j<N; j++) map[i][j] == 0; }){ (実行したい文) } という文をコンパイルしたところエラーが出てしまいました。 if文の判定条件中にfor文は使えないのでしょうか? 使えないのであれば、別の書き方を教えて戴けると嬉しいです。よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
コンパイルして無いのですが、 flg =0; for(i=0;i<M;i++) { for(j=0;j<N;j++) { if(map[i][j] != 0) { flg = 1; } } } if(flg == 0) { 実行したい文 }
その他の回答 (6)
- marori3
- ベストアンサー率25% (23/91)
いかんすごい勘違いをしてた。 他の皆さんのがあっています。
- koko_u
- ベストアンサー率12% (14/116)
marori3 さん、それだと map[i][j] に 0 が出現する度に繰り返し「行いたい処理」が実行されますがな。
- marori3
- ベストアンサー率25% (23/91)
度々失礼します。 『mapの配列が0の時に処理をする』という前提で書いておきました。 for(i=0; i<M; i++){ for(j=0; j<N; j++){ if(map[i][j] == 0){ /*行いたい処理*/ } } } 問題なく動作すると思います。
- yaemon_2006
- ベストアンサー率22% (50/220)
int func(int a[][N]) { int i, j; for(i = 0; i < M; i ++){ for(j = 0; j < N; j ++){ if(a[i][j]) return 0; } } return 1; } int main(void) { if(func(a)){ 実行したい文 }
お礼
実行できました。返答ありがとうございます。
- marori3
- ベストアンサー率25% (23/91)
>Aの配列の内容が0の時と言うことでしょうか? すいません >aの配列の内容が0の時と言うことでしょうか? です。 ソース内で言えばmapの配列の内容が0の時ということですか?
補足
言葉が足らず失礼しました。 mapの配列の内容が0の時ということです。
- marori3
- ベストアンサー率25% (23/91)
判定条件内にfor文を使うことは出来ません。(forは正否を返さないからです。) >2次元配列(ここではa[M][N]とします)の値が全て0の時にだけある文章を実行したいのですが、 というのは、MとNが0の時と言うことでしょうか? Aの配列の内容が0の時と言うことでしょうか?
お礼
実行できました。素早い返答ありがとうございます。