2017-03-13 73 views
-1

我在做什么错?我有一个菜单,可以循环,而cLetter不等于'Q'。C++循环虽然不等于两个值

我希望能够输入'Q'或'q'并退出循环。似乎无法得到正确的语法。

编辑我被主持人要求改进问题。不知道还有什么要补充的。对于do-while循环,我希望它继续循环,直到输入“Q”或“q”。当输入“Q”或“q”时,程序应退出循环。

//开始计划

#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 
    double Num1; 
    double Num2; 
    double sum; 
    double difference; 
    double product; 
    double quotient; 

    char cLetter; // Selecting Integers 
    cout << "Please enter an integer: "; 
    cin >> Num1; 
    cout << "Please enter another integer: "; 
    cin >> Num2; 

    do { 

     cout << "Select a letter to perform a calculation:" << endl; // Main Menu 
     cout << "A for Addition" << endl; 
     cout << "S for Subtraction" << endl; 
     cout << "M for Multiplication" << endl; 
     cout << "D for Division (BUT NOT BY ZERO)" << endl; 
     cout << "N to enter 2 new numbers" << endl; 
     cout << "Q to Quit" << endl; 
     cin >> cLetter; 

     //Perform Calculations 

     sum = Num1 + Num2; 
     difference = Num1 - Num2; 
     product = Num1 * Num2; 
     quotient = Num1/Num2; 

     //Choices Made 
     if ((cLetter == 'A') || (cLetter == 'a')) //Addition 
     { 
      cout << "Addition" << endl; 
      cout << "Sum = " << sum << endl; 
     } 
     else if ((cLetter == 'S') || (cLetter == 's')) //Subtraction 
     { 
      cout << "Subtraction" << endl; 
      cout << "Difference = " << difference << endl; 
     } 
     else if ((cLetter == 'M') || (cLetter == 'm')) //Multiplication 
     { 
      cout << "Multiplication" << endl; 
      cout << "Product = " << product << endl; 
     } 
     else if (((cLetter == 'D') && (Num2 == '0')) || 
       ((cLetter == 'd') && (Num2 == '0'))) // Cannot be divided by zero 
     { 
      cout << "Cannot Divide by Zero!" << endl; 

     } 
     else if ((cLetter == 'D') || (cLetter == 'd')) //Division 
     { 
      cout << "Division" << endl; 
      cout << "Quotient = " << quotient << endl; 
     } 
     else if ((cLetter == 'N') || (cLetter == 'n')) // New Integers 
     { 
      cout << "Please enter an integer: "; 
      cin >> Num1; 
      cout << "Please enter another integer: "; 
      cin >> Num2; 
     } 

     else if ((cLetter == 'Q') || (cLetter == 'q')) // Quitting 
     { 
      cout << "Quitting" << endl; // Invalid Statement 
     } 
     else // invalid letter 
     { 
      cout << "Invalid letter, enter letter from list" << endl; // Invalid Statement 
     } 

    } 
// while ((cLetter != 'Q') || (cLetter != 'q')); //can't seem to get this to work. Next line does. 
    while (cLetter != 'Q'); 
    cout << "Goodbye!" << endl; 

    return 0; 
} 

//程序结束

+0

你想“和”使用这些条件&&。 –

+0

如果这封信是'Q'('cLetter!='Q''是假的),是'cLetter!='q''是真是假? – molbdnilo

+0

你的问题不是语法。你的问题是逻辑。你的循环终止条件是“not((字母不是'Q')或(字母不是'q')”。如果你在课堂上注意到布尔代数的教导,你会知道“not B)“相当于”(不是A)和(不是B)“,因此,您的表达在逻辑上等同于”(不是(字母不是'Q'))amd(不是(字母不是'q') )“或”(字母是'Q')并且(字母是'q')“由于单个字母不能同时是'Q'和'q',因此环路条件将永远不会被满足QED –

回答

2

阿信不能同时qQ。因此,字母不等于q或不等于Q。您需要使用逻辑运营商(&&),而不是逻辑||)操作:

do { 
    // code 
} while (cLetter != 'q' && cLetter != 'Q'); 
// Here ----------------^ 
+0

谢谢!!!我知道这很简单,我错过了,现在它工作正常。 – SCFoster