2013-10-19 3 views
1

컴파일 할 때 오류 없음 ...하지만 출력에 아무런 영향이 없습니다. 나는 이것이 코딩에있어서 매우 멍청한 시도라는 것을 알고있다. 나는 주로 숫자로 작업 해왔다 ... 끈 같은 종류의 것들이 나를 혼란스럽게 만든다.단순한 중첩 된 "If else"문

#include <iostream> 
#include <string> 

using namespace std; 
char chr; 

int main() 
{ 
    string name; 
    string artist; 
    string Taylor; 
    string Alan; 
    string general; 
    string box; 
    string seating; 

    cout << "Enter your name followed by the return key" << endl; 
    cin >> name; 
    cout << endl; 
    cout << "Enter Taylor for Taylor Swift tickets or Alan for Alan Jacskon seats, followed" << endl << "by the enter key" << endl << endl; 
    cout << "Enter box for box seating or general for general seating, followed by the enter key" << endl << endl; 
    cin >> artist; 
    cin >> seating; 

    if (artist + seating == Taylor + general) 
     cout << name << ", Your ticket will cost $60" << endl; 
    else if (artist + seating == Taylor + box) 
     cout << name << ", Your ticket will cost $100" << endl; 
    else if (artist + seating == Alan + box) 
     cout << name << ", Your ticket will cost $75" << endl; 
    else if (artist + seating == Alan + general) 
     cout << name << ", Your ticket will cost $50" << endl; 

    cin >> chr; 
    return 0; 
} 

답변

2

Taylor, Alan, generalbox 당신의 논리에 불행히도 쓰기 만하면됩니다.

if (artist + seating == "Taylor" + "general") 

설명하기에 너무 복잡하기 때문에 여기, 대신 그 값에 대한 변수를 없애고 사용할 수 있습니다.

if (artist + seating == "Taylorgeneral") 

BTW : C++이 프로그래밍 학습을위한 좋은 선택인지 잘 모르겠습니다. 이 일에 더 잘 어울리는 것은 제 의견으로는 Python입니다 (또는 6502와 같은 간단한 CPU를위한 어셈블러로 코딩 할 수도 있지만 완전히 다른 접근법입니다).

1

문자열 Taylor, Alan, general, box은 절대로 초기화되지 않습니다. 그것들을 비교하는 것은 말이되지 않습니다. 는 당신이 아마 원하는 것은 : 리터럴 값이 아닌 변수 ... 작동하도록 코드가 당신이 할 수없는 ++ C에서

string Taylor = "Taylor"; 
string Alan = "Alan"; 
string general = "general"; 
string box = "box"; 

를가되어야

string Taylor = "Taylor"; 
string Alan = "Alan"; 
string general = "general"; 
string box = "box"; 
+0

당신은 그것에 대해 자세히 설명해 줄 수 있습니까? –

0

if 문을이 형식으로 변경하면 작동합니다.

당신은 테일러 문자열을 초기화하지 않은

cout << name << ", Your ticket will cost $60" << endl; 
0

(& & (좌석 == "일반"(작가 == "테일러")))의 경우; 문자열 앨런; 문자열 일반; 문자열 상자; 그래서 그들은 모두 = '\ 0'이고 어떤 경우와도 일치하지 않으므로 결과가 출력되지 않습니다. 무엇이 더 많은 입력을 위해 cin을 사용할 때, '\ n', ''을 무시합니다. 입력에 cin.getline (string a)을 사용할 수도 있습니다.