在我的一个c ++类作业中,给了我任务:
编写一个程序,该程序读取浮点数列表,然后打印出值的计数,平均值和标准偏差。
您可以假定用户输入始终有效,并且列表中至少包含两个数字。
您可以假定列表中的数字由一个空格字符分隔,并且列表中最后一个数字之后的字符是换行符。
实现一个循环,重复上述操作,直到用户请求退出为止。
我正在为最后一步而苦恼,我需要询问用户是否要继续。我的代码如下。
#include <iostream>
#include <algorithm>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
char counter;
do {
char ch = ' ';
int i = 0;
double sum = 0;
double average = 0;
double sum_squared = 0;
cout << "Please enter a list of values (of type double): ";
do {
double x;
cin >> x;
ch = cin.get();
i += 1;
sum += x;
double x_squared = pow(x, 2);
sum_squared += x_squared;
} while (ch != '\n');
average = sum / i;
double standard_deviation = sqrt((sum_squared - (pow(sum, 2) / i)) / (i - 1));
cout << "Number = " << i << endl;
cout << "Average = " << average << endl;
cout << "Standard deviation = " << standard_deviation << endl;
cout << "Continue? (y,n) "; cin >> counter;
} while (counter = 'y');
return 0;
}
我期望当用户最后输入y时,程序将重新执行。但是结果却很奇怪。当我输入n时,代码仍会重新执行。谁能解释为什么?此外,如何正确地在我的代码中实现此功能?谢谢大家的帮助和答复。
答案 0 :(得分:1)
更改
counter = 'y'
到
counter == 'y'
接近尾声将获得令人满意的结果。