Во-первых, это домашняя работа, поэтому я не могу динамически распределять память для массива любого размера, и я не могу использовать vector
.
У меня есть класс, который включает в себя массив double
, содержащий 30 элементов, и две другие переменные для отслеживания количества добавленных элементов и максимального количества элементов, которые можно сохранить.
Есть несколько методов, которые возвращают самое высокое, самое низкое, среднее и общее из элементов в массиве. Примером одного из методов является ...
double Stats::sum() const
{
double sum = 0.0;
for (unsigned short i = 0; i < nElements; ++i)
sum += stats[i];
return sum;
};
В моей функции main()
у меня есть оператор cout
...
cout << "\nTotal rainfall for " << MonthlyRainfall.size() << " months is "
<< MonthlyRainfall.sum() << " inches.\n";
Когда в массиве есть значения, я получаю то, что ожидаю ...
Total rainfall for 1 months is 1.5 inches.
Однако, когда в массиве нет значений (метод возвращает 0.0), но результат выглядит как ...
Total rainfall for 0 months is -1.$ inches.
Может ли кто-нибудь помочь мне понять, что происходит в операторе cout
, который приводит к выводу 0.0, возвращаемого моим методом, как есть?
Примечание: В начале функции main () выполняется следующий оператор для форматирования десятичного вывода. cout << fixed << showpoint << setprecision(1);
Обновление
Я думаю, что было поздно, и я вызывал метод среднего () вместо sum (). Я исправил это, и вы также указали, что мне нужно было внести пару изменений в усредненный метод, чтобы деление на 0 не происходило. (=