3-6 中缀表达式转换成后缀表达式
Posted hi3254014978
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3-6 中缀表达式转换成后缀表达式相关的知识,希望对你有一定的参考价值。
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludextgmath.h(214): warning C4602: #pragma pop_macro:“new”该标识符前面没有 #pragma push_macro
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludextgmath.h(215): warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludextgmath.h(216): warning C4161: #pragma pack(pop...) : 出栈的比入栈的多
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludecmath(23): error C2061: 语法错误: 标识符“abs”
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludecmath(23): error C2059: 语法错误:“;”
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludecmath(23): error C2061: 语法错误: 标识符“acos”
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludecmath(23): error C2061: 语法错误: 标识符“asin”
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludecmath(24): error C2061: 语法错误: 标识符“atan”
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludecmath(24): error C2059: 语法错误:“;”
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludecmath(24): error C2061: 语法错误: 标识符“atan2”
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludecmath(24): error C2061: 语法错误: 标识符“ceil”
1>e:极速考拉下载目录vs2013(visual studio 2013旗舰版)vcincludecmath(25): error C2061: 语法错误: 标识符“cos”
若是switch单词写错了,则可能会出现上述错误。
输入1:
1 #include <iostream> 2 #include <cctype> 3 #include <stack> 4 using namespace std; 5 6 int getPriority(char ch) 7 { 8 int priority = 0; 9 switch(ch) 10 { 11 case ‘+‘: 12 priority = 1; 13 break; 14 case ‘-‘: 15 priority = 1; 16 break; 17 case ‘*‘: 18 priority = 2; 19 break; 20 case ‘/‘: 21 priority = 2; 22 break; 23 case ‘(‘: 24 priority = 3; 25 break; 26 default: 27 priority = 0; 28 break; 29 } 30 return priority; 31 } 32 33 34 int main() 35 { 36 std::stack<char> S; 37 char ch; 38 cin >> ch; 39 while (ch != ‘#‘) 40 { 41 while (isdigit(ch)) 42 { 43 cout << ch; 44 cin >> ch; 45 if(!isdigit(ch)) //ch 不是数字且不是‘#‘, 表示完成了一个整型数据的输入,此时打印一个空格 46 cout << " "; 47 48 49 } 50 if (ch == ‘#‘) 51 break; 52 if (ch == ‘)‘) //如果读入的字符是‘)‘,那么当栈顶元素不是‘(’时,一直输出栈顶元素 53 { 54 while (S.top() != ‘(‘) 55 { 56 cout << S.top()<< " "; 57 S.pop(); 58 } 59 S.pop(); 60 } 61 else //正常情况,将ch和栈顶字符比较优先级 62 { 63 while (!S.empty() && S.top() != ‘(‘ && getPriority(S.top()) >= getPriority(ch)) 64 { 65 cout << S.top()<< " " ; 66 S.pop(); 67 } 68 S.push(ch); 69 70 }cin >> ch; 71 } 72 73 while (!S.empty()) 74 { 75 cout << S.top(); 76 S.pop(); 77 if (!S.empty()) 78 cout << " "; 79 } 80 81 return 0; 82 }
以上是关于3-6 中缀表达式转换成后缀表达式的主要内容,如果未能解决你的问题,请参考以下文章