2015-11-24 3 views
-1

Я занимаюсь разработкой программы для своего введения. на класс 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; 


} 
+3

Вы используете массив 'number', прежде чем фактически считывать в него значения. – interjay

+2

Для чего все эти пустые строки в вашем коде? –

+1

Вам может понравиться прочитать этот http://ericlippert.com/2014/03/05/how-to-debug-small-programs/, чтобы узнать, как помочь себе в таких случаях. – alk

ответ

1

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

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

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

+0

'clang' отметит это с помощью простого' -Wall', но 'gcc' нуждается в явном' -Wempty-body' –

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