Программа работает, но не отображает точные данные

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

Назначение:

Напишите функцию с именем sums(), которая имеет два входных параметра; массив, называемый Input of doubles; и целое число, которое является количеством значений, хранящихся в массиве. Вычислить сумму положительных значений в массиве и сумму отрицательных значений. Также посчитайте количество значений в каждой категории. Верните эти четыре ответа через выходные параметры. Напишите основную программу, которая читает не более 10 действительных чисел и сохраняет их в массиве. Прекратить чтение чисел, когда вводится 0. Вызовите функцию sums () и напечатайте ответы, которые она возвращает. Также вычислите и распечатайте средние значения положительных и отрицательных множеств. Выровнять десятичные точки по числам

ВХОД ОБРАЗЦА: -123,45 -234,56 576,1 -9,345 675,2 100 -10 1654,45 765,89 0 (НЕ в расчетах)

ОБРАЗЕЦ ВЫХОДА:

Программа YourName #8 CSCI1110

Входные данные: 9999,9999 9999,9999...

Статистика: Общее число: Среднее: Положительное 99 99999,9999 9999,9999 Отрицательное 99 99999,9999 9999,9999 Всего 99 99999,9999 9999,9999

---- ВЫБОР ЧАСТИЧНОГО ОБРАЗЦА: Отрицательный 4 -377,3550 -94,3388

Ваш вызов функции будет выглядеть примерно так: суммы (input[], n, &sumPos, &sumNeg, &countPos, &countNeg)

Мой код:

#include <stdio.h>
#include <stdlib.h>

void sums(double arrayN[], int size, double *sumPositive, double *sumNegative,
          int *numberPositive, int *numberNegative)

{
    int i;
    for(i = 0; i < size; i++);

    {

        double currentNumber = arrayN[i];

        if (currentNumber < 0.0)

        {

            *sumNegative = *sumNegative + currentNumber;

            *numberNegative = *numberNegative + 1;

        }

        else

        {

            *sumPositive = *sumPositive + currentNumber;

            *numberPositive = *numberPositive + 1;

        }
    }

}

int main(void)

{

    const int ARRAY_SIZE = 10;
    double number[ARRAY_SIZE];
    double num;
    int all = 0;
    double positiveSum = 0;
    double negativeSum = 0;
    int countPositive = 0;
    int countNegative = 0;
    double sumAll = 0;
    double avgAll = 0;
    double avgPositive = 0;
    double avgNegative = 0;

printf("Enter Real Numbers:\n");

scanf("%lf", &num);

sums(number, all, &positiveSum, &negativeSum, &countPositive,
     &countNegative);

while(all < ARRAY_SIZE && num != 0)

{

    number[all] = num;

    all++;

    scanf("%lf", &num);
}



sumAll = positiveSum + negativeSum;

if(all != 0)

    avgAll = sumAll / all;

if(countPositive != 0)

    avgPositive = positiveSum / countPositive;

if(countNegative != 0)

    avgNegative = negativeSum / countNegative;

printf("Kevin C. Ellis   Program #8  CSCI 1110  Section 3\n");
printf("\nStatistics:\n");
printf("Desc\t\tNumber\t Total:\t\tAverage:\n");
printf("Positive\t%d\t%.4lf\t%.4lf\n",countPositive, positiveSum, avgPositive);
printf("Negative\t%d\t%.4lf\t%.4lf\n",countNegative, negativeSum, avgNegative);
printf("Overall\t\t%d\t%.4lf\t%.4lf\n", all, sumAll, avgAll);

return 0;


}

1 ответ

В функции "суммы" уберите ';' только после цикла for иначе цикл не будет работать правильно

for(i = 0; i < size; i++);

после удаления ';'

for(i = 0; i < size; i++)
Другие вопросы по тегам