如何正确实现一个循环,该循环询问用户是否要重新执行代码?

时间:2019-04-21 21:00:15

标签: c++

在我的一个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时,代码仍会重新执行。谁能解释为什么?此外,如何正确地在我的代码中实现此功能?谢谢大家的帮助和答复。

1 个答案:

答案 0 :(得分:1)

更改

counter = 'y'

counter == 'y'

接近尾声将获得令人满意的结果。