2016-03-03 6 views
0

Мне нужно учиться C++ на лету с моим классом структуры данных. Я только ранее имел опыт работы с java, поэтому моя ошибка кажется тривиальной, но я изо всех сил пытаюсь понять ее. Я получаю ошибку «ожидаемого выражения» и не уверен, что это говорит мне. Я попытался заменить мои литературные выражения на значения кода ASCii и тому подобное. Ошибка возникает во всех моих операторах if. У меня есть все необходимые инструкции «#include». Спасибо за любую помощь.«ожидаемое выражение» ошибка внутри оператора if

stack<double> doublestack; 
char *input = new char[255](); 
char *token = new char[255](); 
cout << "Enter a valid postfix expression" << endl; 
cin.getline(input, 255); 
token = strtok(input, " "); 
while (token != NULL) { 
    if (token* == '*') 
    { 
     double b = doublestack.top(); 
     double a = doublestack.top(); 
     doublestack.pop(); 
     doublestack.pop(); 
     doublestack.push(b * a); 
    } 
    else if (token* == '/') 
    { 
     double b = doublestack.top(); 
     double a = doublestack.top(); 
     doublestack.pop(); 
     doublestack.pop(); 
     doublestack.push(b/a); 
    } 
    else if (token* == '+') 
    { 
     double b = doublestack.top(); 
     double a = doublestack.top(); 
     doublestack.pop(); 
     doublestack.pop(); 
     doublestack.push(b + a); 
    } 
    else if (token* == '-') 
    { 
     double b = doublestack.top(); 
     double a = doublestack.top(); 
     doublestack.pop(); 
     doublestack.pop(); 
     doublestack.push(b - a); 
    } 
    else 
    { 
     doublestack.push(atof(token)); 
    } 
    token = strtok(NULL, " "); 
} 

Если это помогает знать, я получаю постфиксное выражение и нажимаю числа в стек. Когда я нахожу операционный характер, я выложу верхние два числа, чтобы выполнить операцию. Как только постфикс закончен, я должен остаться с одним номером, и это ответ на постфиксное выражение.

Ошибка сообщения следующим образом ...

stack1.cpp:24:20: error: expected expression 
    if (token* == '*') 
      ^
stack1.cpp:32:25: error: expected expression 
    else if (token* == '/') 
        ^
stack1.cpp:40:25: error: expected expression 
    else if (token* == '+') 
        ^
stack1.cpp:48:25: error: expected expression 
    else if (token* == '-') 
+0

, пожалуйста, разместите полное сообщение об ошибке, оно, вероятно, сообщит вам номер проблемы, по крайней мере .. – mentat

+0

Я никогда не видел синтаксис 'token *', а не в Java либо .. – mentat

+0

Что означает «токен»? –

ответ

0

В этом случае а = Ь

double b = doublestack.top(); 
    double a = doublestack.top(); 
    doublestack.pop(); 
    doublestack.pop(); 

думаю, вы хотите получить у последнего значения (верхний()), а затем удалить его из stack (pop()), затем получите следующее последнее значение и т. д.

Смежные вопросы