• ベストアンサー

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文は使えないのでしょうか? 使えないのであれば、別の書き方を教えて戴けると嬉しいです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DarkBerry
  • ベストアンサー率42% (6/14)
回答No.1

コンパイルして無いのですが、 flg =0; for(i=0;i<M;i++) { for(j=0;j<N;j++) { if(map[i][j] != 0) { flg = 1; } } } if(flg == 0) { 実行したい文 }

seo55
質問者

お礼

実行できました。素早い返答ありがとうございます。

その他の回答 (6)

  • marori3
  • ベストアンサー率25% (23/91)
回答No.7

いかんすごい勘違いをしてた。 他の皆さんのがあっています。

  • koko_u
  • ベストアンサー率12% (14/116)
回答No.6

marori3 さん、それだと map[i][j] に 0 が出現する度に繰り返し「行いたい処理」が実行されますがな。

  • marori3
  • ベストアンサー率25% (23/91)
回答No.5

度々失礼します。 『mapの配列が0の時に処理をする』という前提で書いておきました。 for(i=0; i<M; i++){ for(j=0; j<N; j++){ if(map[i][j] == 0){ /*行いたい処理*/ } } } 問題なく動作すると思います。

回答No.4

  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)){ 実行したい文 }  

seo55
質問者

お礼

実行できました。返答ありがとうございます。

  • marori3
  • ベストアンサー率25% (23/91)
回答No.3

>Aの配列の内容が0の時と言うことでしょうか? すいません >aの配列の内容が0の時と言うことでしょうか? です。 ソース内で言えばmapの配列の内容が0の時ということですか?

seo55
質問者

補足

言葉が足らず失礼しました。 mapの配列の内容が0の時ということです。

  • marori3
  • ベストアンサー率25% (23/91)
回答No.2

判定条件内にfor文を使うことは出来ません。(forは正否を返さないからです。) >2次元配列(ここではa[M][N]とします)の値が全て0の時にだけある文章を実行したいのですが、 というのは、MとNが0の時と言うことでしょうか? Aの配列の内容が0の時と言うことでしょうか?

関連するQ&A