如何正确终止此循环?

时间:2017-07-23 05:48:11

标签: c++

我正在尝试制作一个程序,要求用户输入我最终会计算的数字,但如果用户输入“x”,则循环将结束。我没有太多但是如果我运行这个程序并输入一个“x”它就会出错,因为它正在寻找的数据类型是双倍的,所以它不能按照我想要的方式工作。有没有一种替代方法,而不是我在这里做的方式,以便循环结束而不是程序窃听?

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

//function


//main function
int main()
{
    //variables
    double n1, n2;

    //input
    do {
        cout << "Enter the first number \n";
        cin >> n1;
        cout << "Enter the second number \n";
        cin >> n2;

        //output

    } while (true);


    return 0;
}

2 个答案:

答案 0 :(得分:1)

让输入值为字符串,然后将它们转换为char数组,然后你可以检查数组中的第一个元素是否为x,如果是,则为break。然后,您可以在将其转换为双精度后执行任何操作。

string n1, n2;
do {
    cout << "Enter the first number \n";
    cin >> n1;
    cout << "Enter the second number \n";
    cin >> n2;
    char[] n1Array = n1.toCharArray();
    if (n1[0] == 'x') break;
    char[] n2Array = n2.toCharArray();
    n1Double = atof(n1Array);
    n2Double = atof(n2Array);
    //output

} while (true);

我认为应该这样做。

答案 1 :(得分:1)

您可以将n1n2x(字符串)进行比较。如果其中一个等于x,则终止循环。

#include "stdafx.h"
#include <iostream>
#include <string>
#include <bits/stdc++.h>
using namespace std;

//function


//main function
int main()
{
    //variables
    string n1, n2;
    double n3, n4;
    //input
    do {
        cout << "Enter the first number \n";
        cin >> n1;
        cout << "Enter the second number \n";
        cin >> n2;

        if(n1 == "x" || n2  == "x"){ //  n1 or n2 with "x" .
            break;
        }

        n3 = stod(n1); // string to double.
        n4 = stod(n2);



        //output

    } while (true);


    return 0;
}