2014-09-12 2 views
-2
#include <iostream> 
#include <iomanip> 
using namespace std; 
int main() 
{ 
    int number; 
    float cost; 
    char beverage; 

    bool validBeverage; 

    cout << fixed << showpoint << setprecision(2); 
    do 
    { 
     cout << endl << endl; 
     cout << "Hot Beverage Menu" << endl << endl; 
     cout << "A: Coffee   $1.00" << endl; 
     cout << "B: Tea   $ .75" << endl; 
     cout << "C: Hot Chocolate $1.25" << endl; 
     cout << "D: Cappuccino  $2.50" << endl <<endl << endl; 

     cout << "Enter the beverage A,B,C, or D you desire" << endl; 
     cout << "Enter E to exit the program" << endl << endl; 
     cin>>beverage; 
     while(beverage!='A'||beverage!='B'||beverage!='C'||beverage!='D'||beverage!='E'||beverage!='a'||beverage!='b'||beverage!='c'|| 
     beverage!='d'||beverage!='e') 
     { 
      cout<<"Your selection is invalid please re-enter "; 
      cin>>beverage; 
     } 

     switch(beverage) 
     { 
     case 'a': validBeverage = true; 
     case 'A': validBeverage = true; 
     case 'b': validBeverage = true; 
     case 'B': validBeverage = true; 
     case 'c': validBeverage = true; 
     case 'C': validBeverage = true; 
     case 'd': validBeverage = true; 
     case 'D': validBeverage = true; 
        break; 
     default: validBeverage = false; 
     } 

     if (validBeverage == true) 
     { 
      cout << "How many cups would you like?" << endl; 
     cin>>number; 
     } 
     // Fill in the code to begin a switch statement 
     switch(beverage) 
     { 
     case 'a': cost = number * 1.0; 
     case 'A': cost = number * 1.0; 
       cout << "The total cost is $ " << cost << endl; 
       break; 
     case 'b': cost = number * 0.75; 
     case 'B': cost = number * 0.75; 
       cout<< "The total cost is $ " << cost << endl; 
       break; 
     case 'c': cost = number * 1.25; 
     case 'C': cost = number * 1.25; 
       cout << "The total cost is $ " << cost << endl; 
       break; 
     case 'd': cost = number * 2.50; 
     case 'D': cost = number * 2.50; 
       cout << "The total cost is $ " << cost << endl; 
     case 'e': cout << " Please come again" << endl; 
     case 'E': cout << " Please come again" << endl; 
       break; 
     default:cout << " You have enter an invalid selection"<<endl; 
       cout << " Try again please" << endl; 
     } 

    }while(beverage!='e'||beverage!='E'); 
} 

나는이 프로그램을 실행하려했지만 항상 잘못된 선택을 입력했다. while 루프를 수정하려고 시도했지만 작동하지 않았습니다. while 루프입니까? do 문에 while 문을 올바르게 작성했는지 확실하지 않습니다. 루프 조건식While 문이 작동하지 않습니까?

while(beverage!='A' && beverage!='B' &&beverage!='C'&& beverage!='D' && beverage!='E' && beverage!='a' && beverage!='b' && beverage!='c' && 
    beverage!='d' && beverage!='e') 
+1

'||'은 (는) OR입니다. 물론'음료 '는'A' 또는'B'와는 다르거 나 ... .... 당신이 원했던 &&' – Angew

+2

코드 스타일 설명 : 당신은 지나치게 많은 경우에 쓰레기를 쓰고 있습니다. 음료 'e'를하는 것처럼, '제발 다시와주세요'라는 문구가 두 번 인쇄됩니다. – Almo

+0

@Almo 그리고 더 나쁜 것은 곱셈을 두 번해야합니다. – Angew

답변

1

변경

while(beverage!='e'||beverage!='E'); // Condition becomes true always 

유사

while(beverage!='e'&& beverage!='E'); 

하고, 먼저 같은 문제를 && 모든 || 교체 다른 사람들에게도 마찬가지입니다.

while (beverage!='e'||beverage!='E'); 

문자 중 하나 'e' 동일하지 않습니다, 또는 그것이 'E' 같지 않은, 그래서 조건이 항상 true 인 경우, 'e' 같다.

원하는 것은 논리적이고 원하는 것입니다.

3

예로 들어이 조건을 가지고있는 동안

관련 문제