Проблемное среднее число вычисления между интервалом и плаванием

Я с проблемой в среднем вычислении.

У меня есть структура с 3 областями. Что я желаю среднее число, количество продуктов и стоимости единицы. Я должен сделать среднее число между всеми продуктами и его ценами. Однако, когда у меня есть стоимости единицы с 0,50, например, он не складывает в вычислении и делает среднее число только от ценностей, которые начинаются по крайней мере с 1,00. Количество - интервал, и стоимость - плавание.

Сумма и среднее число - следующая:

int x;
double soma=0,media;
for(x=0;x<n;x++)
{
    soma+=((prod[x].PRECO)*(prod[x].QTDE));
}
media=soma/n;
printf("\n\n\nA media de valor entre todos os produtos estocados eh: %.2lf", media);
1
задан 10.11.2019, 03:44
2 ответа

Язык C требует явных преобразований между плаванием, дважды, интервалом и подобный. В линии:

media=soma/n;

написать

media = soma / ((double) n);
1
ответ дан 21.11.2019, 06:26

@Vinícius, чтобы Вы выполнили правильный вход, из которого я рекомендовал бы Вам использовать функцию Отформатированного Входа scanf

Когда Вы читаете о клавиатуре, он приписывает для последовательности, что тогда Вы используете использование strtol() преобразовать в double

char string[30]; //exemplo de uso
double num;
scanf("%[0-9/-,.]", &leitura); // Vai permitir apenas numeros, `-`, `,` e `.`
num = strtol(string);

Я думаю, что это собирается решить проблему.

1
ответ дан 21.11.2019, 06:26