2016-11-11 9 views
-1

配列の3の倍数である10より小さい数を割り当てようとしていますが、 AKA-エラー)。私のループは機能しません。どこが間違っていて、どうしたらいいのか教えてください。私は「もし」ループでcout << x;を追加する場合は、それらを出力し、配列の要素に値を代入することはできません(forループと入れ子式のif文を使用)

#include <iostream> 
using namespace std; 

int main() { 

    int i = -1; 
    int arr[10]; 

    for (int x = 1; x < 10; x++, i++) 
    { 
     if (x % 3 == 0) 
     { 
      arr[i + 1] = x; 
     } 
    } 

    cout << arr[0] << endl << arr[1] << endl<< arr[3] << endl; 

} 

が、それはおそらく、すべてでそれらを割り当てられません:

は、ここに私のコードです。私はそれを理解することはできません。

アイデア?

+1

アレイの一部を初期化しないでください。配列インデックスは '0'で始まることにも注意してください。 –

+0

ちょっと疑問に思っています。なぜ、あなたは-1で始まり、i + 1を使ってコードを複雑にしていますか?それは不必要な複雑さを加えるだけです! – GhostCat

答えて

0

変更少なくともそれ以外の場合i

for (int x = 1; x < 10; x++) 
{ 
    if (x % 3 == 0) 
    { 
     arr[++i] = x; 
    } 
} 

ようなループは、可変xとして9回変更され、アレイは穴を有しています。

+0

私は似たようなことをしました...実際は同じですが、より多くのコードがあり、ページをリロードしたときに私はあなたのコメントを見ました。それは多くを助ける。ありがとう。私は配列に++ iを入れることを考えなかった。 –

+0

@Spindisamasいいえ、まったくありません。どういたしまして。:) –

0

[i+1]から[++i]に変更してください。

最初の配列エントリに割り当てるたびに、最初の値はiの値を変更しません。 (インデックス0)

//編集: 私はあなたがそれぞれのforループでiをインクリメントしていることに気付きませんでしたが、フォロワーは削除する必要があると言いました。

0

申し訳ありませんが、あなたのコードは全く意味がありません。

なぜあなたはint i = -1;で始まりますか? なぜ3つの値しか必要ない場合は、サイズ10の配列を宣言しますか?

3で割り切れる数を追加する場合は、モジュロ計算は必要ありません。あなたがするのは0(または3)から始まり、それらを追加することだけです。しかし、これは何らかの運動だと思うので、あなたのやり方でやっていきます。

#include <iostream> 

int main(){ 
    int arr[10]; 
    int x = 0; //we will check whether x is dividable by 3 or not 
    for(int i = 0; i < 10; x++){ // note that we increment x here 
    if(x % 3 == 0){ 
     arr[i] = x; 
     i++; // now we increment x i.e. next time we fill in the next array element 
    } 
    } 
    //print array 
    for(int i = 0; i < 10; i++){ 
    std::cout << "arr["<< i << "] = " << arr[i] << std::endl; 
    } 
    return 0; 
} 
関連する問題