Не удается определить условие в цикле while - PullRequest
0 голосов
/ 19 февраля 2020

Я делаю программу для ввода 'n' числа целых чисел от пользователя и вычисления четных и нечетных сумм соответственно. Однако меня смущает условие, которое я должен поставить, пока l oop. Кроме этого суммы четных и нечетных чисел рассчитываются идеально.

#include <stdio.h>
int main()
{
    int i, n, number, sum = 0, summ = 0, count;
    printf("Enter Number of Integers:");
    scanf("%d", &n);
    while (i <= n)
    {
        i = number;
        printf("Enter Number:");
        scanf("%d", &number);
        i++;
        if (number % 2 == 0)
        {
            sum = sum + number;
            number++;
        }
        else if (number % 2 != 0)
        {
            summ = summ + number;
            number++;
        }
    }
    printf("Sum of Even Numbers: %d", sum);
    printf("\nSum of Odd Numbers: %d", summ);
}

Ответы [ 3 ]

2 голосов
/ 19 февраля 2020

просто уменьшите n на каждом l oop. Упростите ваш нечетный тест

#include<stdio.h>
int main()
{
    int n,sum=0,summ=0;
    printf("Enter Number of Integers:");
    scanf("%d",&n);
    while(n-- > 0)
    {
        int number;
        printf("Enter Number:");
        scanf("%d", &number);
        if(number % 2) {
            summ += number;
        }
        else {
            sum += number;
        }
    }
    printf("Sum of Even Numbers: %d\n",sum);
    printf("Sum of Odd Numbers: %d\n",summ);
}
0 голосов
/ 19 февраля 2020

Даже если другие ответы верны, они могут быть слишком сложными для начинающих глаз. Я настоятельно рекомендую использовать for l oop для уменьшения путаницы. Также дайте лучшие имена для ваших переменных, чтобы еще яснее понять, что происходит.

#include<stdio.h>

int main()
{
    int n, sum_even = 0, sum_odd = 0, number;

    printf("Enter Number of Integers:");
    scanf("%d", &n);

    for (int i = 0; i < n; i++)
    {
        printf("Enter Number:");
        scanf("%d", &number);

        if (number % 2)
            sum_odd += number;
        else
            sum_even += number;

    }
    printf("Sum of Even Numbers: %d\n", sum_even);
    printf("Sum of Odd Numbers: %d\n", sum_odd);
}
0 голосов
/ 19 февраля 2020

Для начала лучше объявить переменную, которая содержит число целых чисел, как имеющую тип unsigned int.

Например,

unsigned int n = 0;

printf( "Enter Number of Integers: " );
scanf( "%u", &n );

, тогда l oop может выглядеть как

int success = 1;

while ( success && n-- )
{
    int number;

    printf( "Enter Number: " );
    success = scanf( "%d", &number ) == 1;

    if ( success )
    {
        if ( number % 2 == 0 ) sum += number;
        else summ += number;
    }
}

printf( "Sum of Even Numbers: %d\n", sum );
printf("\nSum of Odd Numbers: %d\n", summ ); 

Обратите внимание, что пользователь может прервать ввод. Вы должны обработать такой случай в программе.

Вот демонстрационная программа.

#include <stdio.h>

int main(void) 
{
    int sum = 0, summ = 0;
    unsigned int n = 0;

    printf( "Enter Number of Integers: " );
    scanf( "%u", &n );

    int success = 1;

    while ( success && n-- )
    {
        int number;

        printf( "Enter Number: " );
        success = scanf( "%d", &number ) == 1;

        if ( success )
        {
            if ( number % 2 == 0 ) sum += number;
            else summ += number;
        }
    }

    printf( "\nSum of Even Numbers: %d\n", sum );
    printf( "Sum of Odd Numbers: %d\n", summ );     
}

Вывод может выглядеть как

Enter Number of Integers: 10
Enter Number: 1
Enter Number: 2
Enter Number: 3
Enter Number: 4
Enter Number: 5
Enter Number: 6
Enter Number: 7
Enter Number: 8
Enter Number: 9
Enter Number: 10

Sum of Even Numbers: 30

Sum of Odd Numbers: 25
...