2017-01-11 6 views
-2

私の問題は簡単です。私の下のコードでは、配列上のいくつかの操作のために2つのforループを使用しています。そして私はそれがjの内側のforループで終わったところから始めるためにouter forループを更新しなければなりません。したがって、内側のループの場合j=3だからk=3+1なので、上部のforループはi=4である必要があります。しかし、ループの上部のそれの代わりに、それは連続的に数えます。i=0,1,2,3.....内側のループに基づいてouter forループを更新してください

私は説明したように動作させるには?

int k = 0; 
int sum = 0; 
for (int i = k; i < n; i++) { 
    int d = arr[i]; 
    sum++; 
    for (int j = i + 1; j < n; j++) { 
     if (arr[j] > d && arr[j] < d + 4) { 
      sum++; 
     } 
     if (arr[j] > d + 4) { 
      k = j; 
      break; 
     } 
    } 
} 
+2

何がこのコードで実現しようとしていますか?あなたの変数をよりわかりやすい名前にして、あなたのコードを正しくインデントしてください。 – Frakcool

+1

@prajeeshkumar質問を編集している間はすべての問題を修正してください(コードフォーマット、文法、タグなど) – Frakcool

+0

ハッカーの問題です。私は何をしたいのですか?私の外側のループは、内側のループに設定しているkの値を取得する必要があります。 int私は内部変数kが途切れたところから始めなければなりません。したがって、第1の反復i = 0である。内部ループでは、int kは3になります。したがって、次の繰り返しでは、3ではなく1から始める必要があります。 –

答えて

0

だけ

i=j 

k=j 

を変更し、あなたが行ってもいいですif文

+0

これが実行されました。ありがとうございます。しかし、kの問題は何でしたか?説明は歓迎されます:) –

+0

kはiを設定するために使用された値です。私は外側のループを制御していた変数です。ループがi = 0、次にi = 1、i = 2になるまでi = 2となります。内側のループでi = 3(つまりj = 3とする)を設定すると、外側のループに戻ると、iが1つ増えてから続けられます。 k = jに設定すると、kは一度しか使用されなかったので、ループには何も影響しません。それは理にかなっていますか? –

+0

'k 'の問題は、更新された値が決して使用されないということです。 'int i = k;'は1回だけ実行されるので、 'i'として' k'の代わりに 'i'を更新するほうが、' k'ではなく変数をループする方が良いです。 –

0

それは私の範囲を変更することはありませんあなたは内側のループでのkを変更するという事実にもかかわらず、それは常にあなたがwhileループを使用することができますその代わりに..... 0,1,2,3となります条件付きでカウンタを追加します。 例:

int i = 0; 
while(i < 10){ 
     i = i+1; 
     if(i == 10){ 
      i = i - 1; 
     } 
} 

この状態が変化しています。 2番目に

+0

を開きます。forループ内でiに異なる値を割り当てると、次のチェックに反映されます。ループの条件がi

関連する問題