Я занимаюсь разработкой программы для своего введения. на класс C, и он работает без ошибок или предупреждений. Проблема в том, что когда я ввожу требуемые данные, он не возвращает суммы или средние значения, он возвращает только нули. Я провел последний день, просматривая свой код и проверяя каждую строку, но я не могу найти, что я сделал неправильно. Я ценю любую помощь, которую вы можете мне дать.Программа запускается, но не отображает точные данные.
Назначение:
Написать функцию, названные суммы(), который имеет два входных параметра; массив, называемый Input of doubles; и целое число, которое представляет собой число значений, хранящихся в массиве. Вычислить сумму положительных значений в массиве и сумму отрицательных значений. Также подсчитайте количество значений в каждой категории. Верните эти четыре ответа через выходные параметры. Напишите основную программу, которая читает не более 10 действительных чисел и сохраняет их в массиве. Прекратите чтение чисел при вводе 0. Вызвать функцию sums() и распечатать ответы, которые она возвращает. Также вычислить и распечатать средние значения положительных и отрицательных множеств. Выравнивание десятичных чисел точек на
ОБРАЗЕЦ ВХОД: -123,45 -234,56 576,1 -9,345 675,2 -10 1654,45 765,89 0 (НЕ в вычислении)
Пример вывода:
Ваша программа №8 CSCI1110
Входные данные: 9999,9999 9999,9999 ...
Статистика: Desc Количество Всего: Средний балл: Положительный 99 99999,9999 9999,9999 Отрицательный 99 99999,9999 9999,9999 В целом 99 99999,9999 9999,9999
---- ЧАСТИЧНЫЙ SAMPLE OUTPUT: Negative 4 -377.3550 -94,3388
Ваш вызов функции будет выглядеть как суммы (вход [], п, & 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;
}
Вы используете массив 'number', прежде чем фактически считывать в него значения. – interjay
Для чего все эти пустые строки в вашем коде? –
Вам может понравиться прочитать этот http://ericlippert.com/2014/03/05/how-to-debug-small-programs/, чтобы узнать, как помочь себе в таких случаях. – alk