2017-11-18 11 views
0
なし
char status = 'f'; 
char arr1[11][11]; 
char arr2[11][11]; 
...... 

do{ 
...... 
    for(int x=0; x<11; x++){ 
    for(int y=0; y<11; y++){ 
     if(temp[x][y]!=store[x][y]){ 
      status='f'; 
      } 
     else{ 
      status='t'; 
      } 
     }} 
} 
while(status != 'f'); 
...... 

をCに二次元アレイを比較すると、上記doための私のコードです。のstrcmp

私の知るところでは、whileの条件が真である場合、プログラムはdoから再度実行されます。

temp[x][y]store[x][y]と等しくない場合、私の理解が正しいと仮定して、プログラムはstatus = 'f'とし、ループを続ける必要があります。 tempstoreが等しければ、status = 't'となり、ループは終了します。

今私の問題は、私がループをprocすることができている間、ループが終了しない場合でも、tempstoreが等しい場合です。私は間違って何をしていますか?

ありがとうございました!

答えて

0
else{ 
    status='t'; 
    break; 
} 

statusを一度上書きしないようにしてください。それ以外の場合は上書きされます。

もコード

if (status == 't') break;


ためのループの最初の内部の別のチェックは

do{ 
status = 't'; // denotes that they are equal intiially. 
...... 
    for(int x=0; x<11; x++) { 
     for(int y=0; y<11; y++) { 
      if(temp[x][y]!=store[x][y]) { 
       status='f'; // they are not equal 
      } 
     } 
     if(status == 'f') 
      break; 
    } 
} while(status == 'f'); 
+0

私は 'break'を使用するために特定のディレクトリが必要ですでしょうか? – Raph

+0

私はディレクティブを意味して申し訳ありません – Raph

+0

私は 'do ... while'ループが必要です...もし私がそれを削除したら、2d配列を何度も何度もチェックすることができますか? – Raph