2017-02-06 1 views
0

私は3ヶ月間C++を勉強していましたが、配列を研究しました。ユーザーからの入力を受け取り、プログラムが特別な配列にこれらの数値を格納し、プログラム2つの配列に分割します.1つは偶数、もう1つは奇数です。私の質問は、私がそれらを表示しようとしたときに何か間違いがありましたが、わかりませんでした。C++の配列について

int main() { 
    int even[5]; 
    int odd[5]; 
    int num; 

    cout << "enter 4 numbers!"; 
    for(int i=0; i<4; i++) { 
     cin >> num; 
     if(num%2 == 0){ 
      cout << "its an even number!"; 
      even[i] += num; 
     } 
     else{ 
      cout << "its an odd number!"; 
      odd[i] += num; 
     } 
    } 
    cout << "The odd number/s is/are: "; 
    for(int u=0; u<4; u++){ 
     cout << odd[u] << endl; 
    } 

    cout << endl; 
    cout << "The even number/s is/are: " << endl; 
    for(int z=0; z<4; z++){ 
     cout << even[z] << endl; 
    } 
} 

私を手伝ってくれてありがとう!

+0

最初は偶数と奇数の配列のインデックス変数を取る。現在、両方の配列にiを使用している。最初の数は偶数でscondは奇数でインデックス0の奇数を奇数で欲しいが、currenltlyインデックス1で – user1438832

+0

あなたは初期化されていない変数に '+ ='を使用しています –

答えて

2

質問から、特定の整数配列を偶数と奇数の2つの配列に分割しようとしているようです。ここでの問題は、値をeven[i]odd[i]に入れることを担当するカウンタiが新しい配列に値を割り当てる方法です。だから、たとえ[0]でも存在する可能性がありますが、奇妙な[1]はあなたが得る最初の奇妙な値かもしれません。これらの値を格納するための個別のカウンタが必要です。

int main() { 
    int even[5]; 
    int odd[5]; 
    int num; 
    int evencount = 0; 
    int oddcount = 0; 

    cout << "enter 4 numbers!"; 
    for(int i=0; i<4; i++) { 
     cin >> num; 
     if(num%2 == 0){ 
      cout << "its an even number!"; 
      even[evencount++] = num; 
     } 
     else{ 
      cout << "its an odd number!"; 
      odd[oddcount++] = num; 
     } 
    } 
    cout << "The odd number/s is/are: "; 
    for(int u=0; u < oddcount; u++){ 
     cout << odd[u] << endl; 
    } 

    cout << endl; 
    cout << "The even number/s is/are: " << endl; 
    for(int z=0; z<evencount; z++){ 
     cout << even[z] << endl; 
    } 
} 
+0

@MajdNabeelこの答えがあなたの問題を解決したようです。受け入れられた解決策としてマークする必要があります。 – user4581301

+0

「偶数」と「奇数」のサイズは5である必要はなく、4つだけの数字しか受け入れないので、4で十分でなければなりません。 – Rishi

0

を次のようにあなたのコードの修正が見えるでしょう私は少し異なるアプローチを持っている:

#include <iostream> 
using namespace std; 

int main() { 
    int array[4]; // array size needs to be 4 only and not 5 
    /*int num;*/ // not required 
    bool is_odd[4] = {false, false, false, false}; 


    cout << "enter 4 numbers!\n"; 
    for(int i=0; i<4; i++) { 
     cin >> array[i]; 
     if(array[i]%2 == 0){ 
      cout << "its an even number!\n"; 
     } 
     else{ 
      cout << "its an odd number!\n"; 
      is_odd[i] = true; 
     } 
    } 
    cout << "The odd number/s is/are:\n"; 
    for(int u=0; u < 4; u++){ 
     if (is_odd[u] == true) 
      cout << array[u] << endl; 
    } 

    cout << endl; 
    cout << "The even number/s is/are:\n" << endl; 
    for(int u=0; u < 4; u++) { 
     if (is_odd[u] == false) 
      cout << array[u] << endl; 
    } 
} 

は、ここに答えを確認してください:check-answer

+0

明快にするために 'bool isOdd [4] = {false}'を使ってみませんか? – Caleth

+0

@Caleth、そうできる。 – Rishi

+1

@Caleth明瞭さを増すことがないので、混乱が生じます。明示的に配列を初期化するには、 'bool isOdd [4] = {false}または' bool isOdd [4] = {false、false、false、false};で配列全体を暗黙的に値初期化するために 'bool isOdd [4] = {}'を使用します。今、人々は 'bool isOdd [4] = {true};が' true'を使って配列を初期化するという印象を受けます。 – nwp

0

をあなたが宣言された配列の値にアクセスします初期化されていません。だからそこにはどんな値もあります。 6.49e154のように。宣言時には必ず初期化してください!

関連する問題