Вычисление среднего геометрического числа в Си

Мне нужно написать программу, которая будет вычислять среднее арифметическое и геометрическое 10 переменных. Когда я запускаю тесты программы, она не может вычислить среднее геометрическое, когда есть числа, которые включают ноль, например ряд: 3 2 1 0 0 0 2 1 1 8; Результат должен быть 1,9195

*(когда все переменные равны 0, вывод должен быть таким, что ответа нет, но когда есть нули в дополнение к другим числам, он должен исключить их и вычислить только натуральные числа)

#include <stdio.h>
#include <math.h>
void main()
{
    int num, i;
    float sum, mult;

    printf("Enter 10 variables: ");

    sum = 0;
    mult = 1;

    for (i=0; i<10; i++)
    {
        scanf("%d", &num);
        sum += num;
        mult *= num;
    }

    if (mult == 0 || mult < 0)
    {
        printf("No positive numbers, hence no geometric mean"); 
    }
    else 
    {
    printf(" %.4f", pow(mult, (1.0 / i)));
    }

    printf(" %.4f", sum / i);
}  

1 ответ

mult *= num;

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

Другие вопросы по тегам