2014-10-20 9 views
0

목적은 픽스/리버스 폴란드어 표기법을 해결할 프로그램을 작성하는 것이 었습니다. 그것은 쉬운 일로 보였지만 나는이 오류를 간과하는 것처럼 보입니다. 모든 도움을 미리 감사드립니다.픽스 후 표현 솔버

vector<int> stack; 
string input; 

cout << "Please enter post-fix expression to be evaluated (+, -, *, /): "; 
cin >> input; 

for(int i=0; i<input.size(); i++) 
{ 
    if(input[i] == '+') 
    { 
     int temp1 = stack.back(); 
     stack.pop_back(); 
     int temp2 = stack.back(); 
     stack.pop_back(); 

     int sum = temp1 + temp2; 
     stack.push_back(sum); 
    } 
    else if(input[i] == '-') 
    { 
     int temp1 = stack.back(); 
     stack.pop_back(); 
     int temp2 = stack.back(); 
     stack.pop_back(); 

     int difference = temp1 - temp2; 
     stack.push_back(difference); 
    } 
    else if(input[i] == '*') 
    { 
     int temp1 = stack.back(); 
     stack.pop_back(); 
     int temp2 = stack.back(); 
     stack.pop_back(); 

     int product = temp1 * temp2; 
     stack.push_back(product); 
    } 
    else if(input[i] == '/') 
    { 
     int temp1 = stack.back(); 
     stack.pop_back(); 
     int temp2 = stack.back(); 
     stack.pop_back(); 

     int quotient = temp1/temp2; 
     stack.push_back(quotient); 
    } 
    else 
    { 
     stack.push_back(input[i]); 
    } 
} 

cout << "Result: " << stack.back(); 
+0

음, 처음에는'input [i] == '+''는'int'와'char'를 비교하려고 시도하고 있습니다. 둘째,''+ ''가''int'가 아니기 때문에,''cin >> 입력은 결코''+ ''를 성공적으로 읽지 않을 것입니다. – cdhowie

+0

둘째, - 및/또는 잘못된 순서로 피연산자를 사용했습니다. – EJP

+0

이것은 [codereview] (http://codereview.stackexchange.com/)에 대한 완벽한 질문이지만 stackoverflow에 대한 질문은 아닙니다. – dvvrd

답변

1

진짜 문제는 stack.push_back (input [i]); char (예 : '7')을 밀면 55가 스택에 푸시됩니다.