Сравнение сумм четных и нечетных чисел
Программа должна сравнивать сумму четных и нечетных чисел , но всегда выдает нечетное.
#include "stdio.h"
int main() {
int n, i, s1 = 0, s2 = 0;
int arr[100] = {};
printf("how many numbers? : ");
scanf("%i", &n);
puts("\nenter values");
for (i = 0; i < n; i++) {
printf("%i = ", i + 1);
scanf("%i", &arr[i]);
}
if (i % 2 == 0)
s1 += arr[i];
if (i % 2 != 0)
s2 += arr[i];
if (s1 > s2) {
printf("сумма четных больше");
}else{
printf("сумма нечетных больше");
}
}
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Вот это
for (i = 0; i < n; i++) {
printf("%i = ", i + 1);
scanf("%i", &arr[i]);
}
if (i % 2 == 0)
s1 += arr[i];
if (i % 2 != 0)
s2 += arr[i];
должно быть
for (i = 0; i < n; i++) {
printf("%i = ", i + 1);
scanf("%i", &arr[i]);
if (arr[i] % 2)
s2 += arr[i];
else
s1 += arr[i];
}
Во-первых, вы должны проверять каждое число, во-вторых, проверять не индекс, а сами числа (мы же говорим о четных и нечетных числах, а не о числах, стоящих на четных и нечетных местах? я правильно понимаю? )
Можно обойтись совсем без массива:
int main()
{
int n, s1 = 0, s2 = 0;
printf("how many numbers? : ");
scanf("%i", &n);
puts("\nenter values");
for (int i = 0, a; i < n; i++)
{
printf("%i = ", i + 1);
scanf("%i", &a);
*((a%2) ? &s2 : &s1) += a;
}
printf("сумма %sчетных больше",(s2 > s1) ? "не" : "");
}
Автор решения: Maxim Timakov
→ Ссылка
Данный код содержит несколько ошибок:
- Во первых, суммировать нужно в цикле.
- Во вторых, Вы проверяете на четность индекс в массиве, а нужно элемент массива.
- В третьих, достаточно одной проверки на четность.
- В четвертых, код содержит выход за границу введенных данных.