Хотя в повторяющихся строках кода нет ничего плохого, это определенно не литература.Если вы сталкиваетесь с выполнением одной и той же вещи 5 раз, и единственное изменение - это один или два индекса в выходных данных - вы должны думать циклично.Здесь вы можете расширить цикл, включив в него запрос ввода, а также обработку суммирования положительных чисел, и все это можно сделать без необходимости сохранять входные значения в массиве.
Все, что вам нужноподдерживать в цикле это sum
из положительных значений.После выхода из цикла вы можете вычислить среднее значение на основе количества введенных положительных значений.
В целом, вы можете сделать что-то похожее на:
#include <stdio.h>
#define NNUM 5 /* if you need a constant, #define one (or more) */
int main (void) {
int n = 0, /* no. of positive value counter */
sum = 0, /* sum of all positive values */
val; /* each input value */
double avg; /* floating-point number to hold average */
for (int i = 0; i < NNUM; i++) { /* loop NNUM times */
printf ("enter no. %d: ", i+1); /* prompt for input */
if (scanf ("%d", &val) != 1) { /* validate EVERY user input */
fputs ("error: invalid integer input.\n", stderr);
return 1;
}
if (val > 0) { /* check if val is positive */
sum += val; /* add val to sum */
n++; /* increment pos value count */
}
}
avg = (double)sum / n; /* compute average (note cast) */
printf ("\nThe number of positive numbers : %d\n"
"The average of all positive value is : %.2f\n", n, avg);
}
ПримерИспользуйте / Выведите
$ ./bin/avgposnum
enter no. 1: 14
enter no. 2: 63
enter no. 3: 78
enter no. 4: 45
enter no. 5: 21
The number of positive numbers : 5
The average of all positive value is : 44.20
или с несколькими отрицательными значениями:
$ ./bin/avgposnum
enter no. 1: -10
enter no. 2: 10
enter no. 3: 0
enter no. 4: 20
enter no. 5: -20
The number of positive numbers : 2
The average of all positive value is : 15.00
Просмотрите все и дайте мне знать, если у вас есть дополнительные вопросы.