2015-11-29 3 views
0

Хорошо, так что медведь со мной, если мой заголовок был очень расплывчатым. Я даже попытался разобраться с моей проблемой и найти ее здесь, но я действительно не могу придумать предложение, которое лучше всего описывает мою проблему.У меня есть (логическая?) Ошибка в моем цикле с массивом

У меня есть задание, и это выглядит следующим образом:

Напишите программу, которая читает множество целых чисел, а затем находит и печатает сумму четных и нечетных чисел

Я думал о решении уже и решил использовать массив для хранения чисел, которые пользователь будет вводить, и используя оператор if/else для добавления четных и нечетных чисел вместе. Пока мой код ниже слов для четных чисел, но я действительно не могу найти причину, почему всякий раз, когда я пытаюсь добавить нечетные числа, это заканчивается действительно большим числом.

Ex: Я ввожу 13 и 17, я получаю 4253907, это не влияет на четные числа, даже если я помещаю нечетные и четные числа в определенные индексы массива. Четные числа будут добавляться правильно, но нечетные числа не будут.

Вот что у меня до сих пор

int length, evenSum, oddSum, temp, arsize; 
cout <<"Input how many integers will be evaluated: "; 
cin >> length; 
arsize = length-1; 
int num[arsize]; 

for(int i = 0; i<=arsize; i++) 
{ 
    cout<<"Input integer " << i+1 <<": "; 
    cin>>num[i]; 
} 

for(int i = 0; i<=arsize; i++) 
{ 
    if(num[i]%2 != 0) 
    { 

     oddSum += num[i]; 

    } 

else 
    evenSum += num[i]; 
} 

cout << "Sum of even integers: " << evenSum << endl; 
cout << "Sum of odd integers: " << oddSum; 
+0

Вы инициализировали oddSum и evenSum до 0? Кроме того, num должно быть выделено для записей длины (вот сколько вы читаете). Как бы то ни было, вы пишете последнюю запись. Наконец, обычно вы не используете переменную типа arsize здесь. Вместо этого вы запускаете свои циклы как «for (i = 0; i LaszloLadanyi

+0

Я буду помнить об этом. Это должно быть длина 1, но я думал, что ошибка была вызвана этим, и это закончилось тем, что показывает сейчас. – kobowo

ответ

1

Это должно помочь:

int evenSum = 0, oddSum = 0; 

инициализирует переменные.

+0

) (* $() @ JKJ @ Большое спасибо! Я все время забываю, что это вызовет проблемы, если я не буду инициализировать переменные в разы. – kobowo

+0

Надеюсь, вы получили свой ответ .. wc :) – nullpointer

Смежные вопросы