【发布时间】:2021-03-20 10:57:51
【问题描述】:
我需要在我的声明中将最小值 (minValue) 设置为 -1。我该如何使用 || (或条件)在我的while循环中,考虑到负值结束程序,从一组正数中提取最小值?此外,双平均变量(平均值)并未计算预期值。例如,如果该值应为 35.7789,则返回 35.0000。我还打算在不必要时返回不带小数点的平均值。例如,如果用户首先输入负值,则平均值应为 0 而不是 0.0000。我如何操纵平均变量来做到这一点?
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int intVal;
int sum = 0;
int maxValue = -1;
int minValue = -1;
double average = static_cast<double>(0);
int count = 0;
int evenCount = 0;
int oddCount = 0;
cout << endl << "Enter an integer (negative value to Quit): ";
cin >> intVal;
cout << endl;
while(intVal >= 0)
{
if(intVal > maxValue)
maxValue = intVal;
if(intVal < minValue)
minValue = intVal;
count ++;
sum += intVal;
if(intVal > 0)
average = sum / count;
if(intVal % 2 == 0)
evenCount ++;
else
oddCount ++;
cout << "Enter an integer (negative value to Quit): ";
cin >> intVal;
cout << endl;
}
cout << fixed << setprecision(4);
cout << "Values entered:" << setw(8) << right << count << endl;
cout << "Sum of numbers:" << setw(8) << right << sum << endl;
cout << " Average value:" << setw(8) << right << average << endl;
cout << " Maximum value:" << setw(8) << right << maxValue << endl;
cout << " Minimum value:" << setw(8) << right << minValue << endl;
cout << " Even numbers:" << setw(8) << right << evenCount << endl;
cout << " Odd numbers:" << setw(8) << right << oddCount << endl;
cout << endl;
}
【问题讨论】:
-
average = sum / count;右侧是两个整数的除法,其结果是一个整数,然后将其转换为双精度并分配给average。顺便说一句,double average = static_cast<double>(0);是写double average = 0.;的一种复杂方式。 -
我需要将 count 和 sum 声明为整数。除以两个整数时,我有什么办法可以返回精确到小数点后四位的值?
-
强制除法以浮点数进行,例如
average = (double)sum / count;或average = static_cast<double>(sum) / count;. -
这行得通,我现在只是在寻找最低限度的答案。
-
你已经接受that answer ;-)