所以基本上我正在参加一个介绍性的tp编程课,我们已经学过基础知识(循环,if语句,变量类型等)。我正在解决一个程序,我必须要求用户输入6个不同的温度值,然后打印出6个值的最大值,平均值和范围。
我应该如何以及在哪里存储这6个号码?
cout<< "Enter 6 diff numbers" << endl;
float numbers;
cin >> numbers;
for ( .... i_++)
max = ;
min = ;
cout << .. << .... << endl;
//这应该没有帮助,因为float只能保存一个数字而不是6.如果不使用任何类型的数组,函数等,我该如何做?
我在考虑使用子串并将其声明为字符串或其他东西?
感谢您的帮助。
答案 0 :(得分:1)
我提供了您可以在不使用数组的情况下使用的基本算法。 假设一切都在开尔文。
float max = 0; // Minimum Value Set for comparing with larger values
float min;
float sum = 0;
float avg = 0;
float tmp;
string number, alltheNumbers;
for( int i = 0; i < 6; i++ ){
cin>>number;
tmp = <float> number;
if( tmp > max ){
max = tmp;
}
sum += tmp;
alltheNumbers += ',' + number; // Save all the numbers in comma seperated Strings
}
min = max; // Maximum Found value set for finding minimum
std::string delimiter = ",";
size_t pos = 0;
while ((pos = alltheNumbers.find(delimiter)) != std::string::npos) {
number = alltheNumbers.substr(0, pos); // Use the comma to retrieve all those numbers
tmp = <float> number;
if( tmp < min ){
min = tmp;
}
alltheNumbers.erase(0, pos + delimiter.length());
}
avg = sum / 6;
因此,您拥有以下所需数据的变量。
max <- will have the maximum value
min <- will have the minimum value
avg <- will have the average value.
答案 1 :(得分:1)
这是一种不使用数组而不会破坏其余作业的方法。
cout<< "Enter 6 different numbers" << endl;
float num1, num2, num3, num4, num5, num6, max, min, sum, avg;
cin >> num1 >> num2 >> num3 >>
num4 >> num5 >> num6;
古德勒克!
答案 2 :(得分:0)
对@ Zion的改进是第一个答案,我认为将min和max初始化为第一个数字就足够了。在for循环输入编号之前,然后设置max = number和min = number,然后从i = 1开始循环。