#c
#c
Вопрос:
Я уже искал в Интернете некоторые ответы, но, похоже, не могу найти ответ. Я предполагаю, что эта программа была бы проще, если бы я использовал цикл for, но мой профессор приказал нам использовать оператор цикла while .
#include <iostream>
using namespace std;
int main()
{
float value[10];
float average;
float min;
float max;
int index1 = 0, index2 = 0, index3 = 0, index4 = 0, sum;
while (index1 < 10)
{
cout << "Enter a value : ";
cin >> value[index1];
index1 ;
}
while (index2 < 10)
{
sum = value[index2];
index2 ;
}
max = value[index3];
while (index3 < 10)
{
if (max < value[index3])
{
max = value[index3];
}
index3 ;
}
min = value[index4];
while (index4 < 10)
{
if (min > value[index4])
{
min = value[index4];
}
index4 ;
}
average = sum / 10;
cout << "The average is : " << average << "n";
cout << "The largest value is : " << max << "n";
cout << "The smallest value is : " << min << "n";
}
Вот как это выглядит, когда я его запускаю.
Enter a value : 98
Enter a value : 45
Enter a value : 32
Enter a value : 21
Enter a value : 67
Enter a value : 54
Enter a value : 74
Enter a value : 25
Enter a value : 98
Enter a value : 33
The average is : -2.00668e 008
The largest value is : 98
The smallest value is : 21
Комментарии:
1. Вы не инициализируете
sum
2. В этой программе есть несколько ошибок, и все они все равно были бы неправильными, если бы вы использовали цикл for . Основная проблема в том, что вы забыли
sum = 0
в начале своего кода. Другая проблема заключается в том, что вы выполняете целочисленное деление при вычислении среднего значения, измените код наaverage = sum / 10.0;
, чтобы получить деление с плавающей запятой.
Ответ №1:
Вы видите результат целочисленного деления и неинициализированные переменные. 10.0
Разделите на, а не так, чтобы компилятор преобразовал оба значения в число с плавающей запятой. 10
Также присваивайте 0 сумме при ее объявлении.
Я предполагаю, что в вашей программе есть и другие предупреждения, поскольку вы также неявно присваиваете целому числу значения с плавающей запятой.
Ответ №2:
Move variables outside of the main function globally and there is no need to initialize them. Also, you can do calculations using only one loop.
#include <iostream>
using namespace std;
float value[10], average, min, max, sum;
int index;
int main()
{
while (index < 10)
{
cout << "Enter a value : ";
cin >> value[index];
if (value[index] > max) max = value[index];
if (value[index] < min) min = value[index];
sum = value[index];
index ;
}
average = sum / 10.0;
cout << "The average is : " << average << "n";
cout << "The largest value is : " << max << "n";
cout << "The smallest value is : " << min << "n";
}
Комментарии:
1. Переменная ‘sum’ должна иметь тип с плавающей запятой вместо int, если только ее суммирование не будет усечено (поскольку значение имеет тип с плавающей запятой).
2. @gobinda Правильно, спасибо. Я просто скопировал его код и не заметил этого.
Ответ №3:
сумма должна быть равна нулю в момент объявления, иначе она будет иметь мусорное значение. int index1 = 0, index2 = 0, index3 = 0, index4 = 0, sum = 0;