1

これがコードのセグメントです。if文が成功したらループ1に戻りたい。if ステートメントが成功した場合、プログラムで 1000 を追加しないようにする必要があります。

editA.i== プログラムの先頭で 0。

文字列の 2 つの列を比較して、距離測定値を取得したいと考えています。

break コマンドと continue コマンドを試しましたが、どれも思いどおりに機能しません。

ありがとうございました

for(editA.i; editA.i<6; editA.i++)  // Loop 1
{
    for(editB.j=0; editB.j<6; editB.j++)    // Loop 2
    {
        if(editA.A[editA.i] == editB.B[editB.j])  // if this statment works, 
            // I want to go back to "Loop 1". How???

            sum+= abs(editA.i - editB.j);

        else
            sum+= 1000;
    }

}
4

3 に答える 3

11
for(editA.i; editA.i<6; editA.i++)  // Loop 1 
{ 
    for(editB.j=0; editB.j<6; editB.j++)    // Loop 2 
    { 
        if(editA.A[editA.i] == editB.B[editB.j])  // if this statment works  I want to go back to "Loop 1"
        {
            sum+= abs(editA.i - editB.j); 
            break ;
        }

        else 
            sum+= 1000; 
    } 
} 
于 2012-08-31T20:23:17.493 に答える
1

内側のループからのみ脱出したい場合は、「if ステートメント」に break ステートメントを追加します。両方のループを完全にエスケープしたい場合は、代わりに return ステートメントを使用する必要があります。

于 2012-08-31T20:38:08.153 に答える
1

Grzegorz の答えは正しいですが、要件は異なる場合があります。

これは、あなたの望むことですか?

for(editA.i; editA.i<6; editA.i++)  // Loop 1
{
    bool found = false;
    for(editB.j=0; editB.j<6; editB.j++)    // Loop 2
    {
        if(editA.A[editA.i] == editB.B[editB.j]) {  
           sum+= abs(editA.i - editB.j);
           found = true;
           break; 

       }

    }
    if ( !found ) {
        sum += 1000;
    }
}
于 2012-08-31T20:54:53.717 に答える