【问题标题】:Accepting char(N) to exit calculator loop接受 char(N) 退出计算器循环
【发布时间】:2014-10-05 22:20:45
【问题描述】:

我正在编写一个非常基本的计算器程序,当用户输入字符“N”时,它会循环然后退出。输入“N”时,我似乎无法让程序退出。我已经轻而易举地解决了所有问题,但我在整合这个问题时遇到了问题。

我已经确定有人会说使用void main(),这就是我的导师想要的。我也知道我的 while 语句 (Num1 != 'N') 的条件不正确,它现在只是一个占位符,因为这是我需要帮助弄清楚的。

#include <iostream>
using namespace std;

void main()
{
int Num1, Num2, Plus, Minus, Divide, Mod, Mult;
char Operand;


do
{
    cout << "Enter two separate integers ---> ";
    cin >> Num1 >> Num2;

    cout << "\nEnter desired operand ---> ";
    cin >> Operand;
    cout << endl;

    switch (Operand)
    {
    case '+':
        Plus = (Num1 + Num2);
        cout << Num1 << " + " << Num2 << " = " << Plus << endl;
        break;
    case '-':
        Minus = (Num1 - Num2);
        cout << Num1 << " - " << Num2 << " = " << Minus << endl;
        break;
    case '*':
        Mult = (Num1 * Num2);
        cout << Num1 << " * " << Num2 << " = " << Mult << endl;
        break;
    case '/':
        Divide = (Num1 / Num2);
        cout << Num1 << " / " << Num2 << " = " << Divide << endl;
        break;
    case '%':
        Mod = (Num1 % Num2);
        cout << Num1 << " % " << Num2 << " = " << Mod << endl;
        break;

    }


}
while (Num1 != 'N');
}

【问题讨论】:

  • 你试过Operand != 'N'吗?
  • 感谢您的建议。这确实有效,但我想让用户随时退出。我试图做一个“输入(Y / N)继续)类型的事情,但程序开始变得古怪(例如,我收到一个错误,说一些类似于“操作数未定义等......”)和我不确定将什么设置为 while 条件

标签: c++ while-loop


【解决方案1】:

Num1 是一个整数,永远不会等于“N”。 而是尝试初始化一个字符串缓冲区,然后检查它是否以“N”开头。如果为真则通过退出跟进,否则将字符串转换为整数。您的代码可以这样优化:

int Num1, Num2, Plus, Minus, Divide, Mod, Mult;
char Operand;
string buffer;

while(true) {
    cout << "Enter two separate integers ---> ";
    cin >> buffer;
    if(buffer.at(0) == 'N') break;    /* Checks for 'N' as first char and breaks out */
    Num1 = atoi(buffer.c_str());      /* Sets Num1 to the integer value of buffer */
    cin >> Num2;
    cout << "\nEnter desired operand ---> ";
    cin >> Operand;
    cout << endl;

    ...
}

【讨论】:

    【解决方案2】:

    试试

    while (Operand != 'N');
    

    :)

    【讨论】:

      【解决方案3】:

      您的主要问题在于程序的逻辑。为了到达Num1 != 'N',您至少需要输入 3 个字符。如果您检查第一个 cin 或任何 cin 之后会更方便。

      另外,如果您也检查“n”会更好,因为您可能没有按 SHIFT。

      【讨论】:

        【解决方案4】:

        您说Operand != 'N' 有效,并且您希望它适用于所有输入类型。 我的建议(对不起,我知道我的 c++ 是垃圾)是逐个阅读它们并在每次阅读后分支:

        cin >> Num1;
        if(Num1 == 'N')
         break;
        cin >> Num2;
        if(Num2 == 'N')
         break;
        cin >> Operand;
        if(Operand == 'N')
         break;
        

        或者循环执行:

        #define NUMBER_OF_INPUTS 3
        
        for(int i=0 ; i<NUMBER_OF_INPUTS ; i++){
          cin >> input[i];
         if(input[i] == 'N')
          return;
        }
        

        【讨论】:

          【解决方案5】:

          我认为您最好使用不同的变量来处理终止。使用这样的东西:

          do {
          cout << "Do you want to continue (Y/N)?"
          cin >> terminate;
          if (terminate == 'N')
          break;
          //your code here
          } while(terminate != 'N');
          

          【讨论】:

            猜你喜欢
            • 2016-02-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多