SCAU 8588 表达式求值

SCAU 8588 表达式求值8588 表达式求值 时间限制 1000MS 代码长度限制 10KB 利用栈编写表达式求值程序 输入含有 四则运算的表达式 其中负数要用 0 正数 表示 并以 结束 要求输出表达式的值 两运算符号的优先关系见教材表 3 1 输入格式

大家好,我是讯享网,很高兴认识大家。

8588 表达式求值 时间限制:1000MS 代码长度限制:10KB

利用栈编写表达式求值程序:输入含有“+”、“-”、“*”、“/”四则运算的表达式,其中负数要用(0-正数)表示,并以=结束。要求输出表达式的值(两运算符号的优先关系见教材表3.1)。

输入格式 第一行:一个算术表达式

输出格式 第一行:算术表达式的值


讯享网

作法:
思路:
1.两个栈(记得清空)
fu:符号栈
shu:数字栈
2.输入字符w:
1.判断w是不是数字,如果是直接存入数字栈,否则先在“小黑屋”待着,等待判断优先级,优先级表在下:在这里插入图片描述根据大于,小于,等于有不同的操作
2.大于:入栈
小于:把栈顶元素出栈,并进行四则运算
等于:炸掉(只有等号和括号会有的情况)
3.把最后结果存进栈,出栈

#include <iostream> #include <cstring> #include <cstdio> #include <stack> using namespace std; stack <char> fu; stack <char> shu; char porior(char e,char c) { 
   char n; switch(c){ 
    case'+': case'-':{ 
    if(e=='('||e=='=') n='<'; //c>e else n='>';}break; case'*': case'/':{ 
    if(e=='*'||e=='/'||e==')') n='>';//c<e else n='<';}break; case'(':{ 
    if(e==')') { 
    printf("括号不匹配\n"); return 0; } else n='<';} //c>e; break; case')':{ 
    if(e=='(') n='='; else if(e=='=') { 
   printf("缺少左括号\n");return 0;} else n='>'; }//e>c break; case'=':{ 
    if(e=='=') n='='; else if(e=='(') { 
   printf("缺少右括号\n");return 0;} else n='>'; } //e>c } return n; } int main() { 
    while(!fu.empty())//清空类似于InitStack功能 fu.pop(); while(!shu.empty()) shu.pop(); fu.push('='); char w; w=getchar(); int e; while(w!='='||fu.top()!='=') { 
    int d=0; if(w>='0'&&w<='9') { 
    while (w >= '0' && w <= '9') { 
    d = d * 10 + (w - '0'); w = getchar(); } shu.push(d); } else { 
    if(porior(fu.top(),w)=='<') { 
    fu.push(w); w=getchar(); } else if(porior(fu.top(),w)=='='&&w==')') { 
    int t; t=fu.top(); fu.pop(); w=getchar(); } else if(porior(fu.top(),w)=='>') { 
    int a, b, f = 0, d; a=shu.top(); shu.pop(); b=shu.top(); shu.pop(); d=fu.top(); fu.pop(); if (d == '+') f = a + b; else if (d == '-') f = b - a; else if (d == '/') f = b / a; else if (d == '*') f = b * a; shu.push(f); } } e=fu.top(); } int r; r=shu.top(); shu.pop(); printf("%d",r); return 0; } 

讯享网

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小讯
上一篇 2025-04-01 12:57
下一篇 2025-01-17 12:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/62434.html