NYOJ 257 郁闷的C小加(一)
2012-08-05 21:10
218 查看
郁闷的C小加(一)
时间限制:1000 ms | 内存限制:65535 KB难度:3
描述
我们熟悉的表达式如a+b、a+b*(c+d)等都属于中缀表达式。中缀表达式就是(对于双目运算符来说)操作符在两个操作数中间:num1 operand num2。同理,后缀表达式就是操作符在两个操作数之后:num1 num2 operand。ACM队的“C小加”正在郁闷怎样把一个中缀表达式转换为后缀表达式,现在请你设计一个程序,帮助C小加把中缀表达式转换成后缀表达式。为简化问题,操作数均为个位数,操作符只有+-*/ 和小括号。
输入第一行输入T,表示有T组测试数据(T<10)。
每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个表达式。这个表达式里只包含+-*/与小括号这几种符号。其中小括号可以嵌套使用。数据保证输入的操作数中不会出现负数。并且输入数据不会出现不匹配现象。输出每组输出都单独成行,输出转换的后缀表达式。样例输入
2 1+2 (1+2)*3+4*5
样例输出
12+ 12+3*45*+
/* 功能Function Description: NYOJ-257 中缀式变后缀式 开发环境Environment: DEV C++ 4.9.9.1 技术特点Technique: 版本Version: 作者Author: 可笑痴狂 日期Date: 20120805 备注Notes: */ #include<stdio.h> #include<iostream> #include<string.h> #include<stack> using namespace std; char precede(char s,char z)//判断算术符的优先级* { if(s=='+'||s=='-') { if(z=='*'||z=='/'||z=='(') return '<'; else return '>'; } if(s=='*'||s=='/') { if(z=='(') return '<'; else return '>'; } /* if(s=='('||s=='#') //对于‘#’可以不用判断,因为下边会在栈顶出现‘#’而且当前读入的也为‘#’时候跳出循环 { if(s=='('&&z==')'||s=='#'&&z=='#') return '='; else return '<'; } */ if(s=='('&&z==')') return '='; else return '<'; } int main() { int n,len,i; char a[1005]; scanf("%d",&n); while(n--) { stack<char> Optr; memset(a,0,sizeof(a)); Optr.push('#'); scanf("%s",a); len=strlen(a); a[len]='#'; for(i=0;i<=len;) { if(a[i]=='#'&&Optr.top()=='#') break; if(a[i]>='0'&&a[i]<='9'||a[i]=='.') //如果是运算数直接输出 { printf("%c",a[i]); i++; } else { switch(precede(Optr.top(),a[i])) { case '<': Optr.push(a[i]); i++; break; case '=': //说明括号或#号成对出现,弹出栈顶的‘(’或者‘#’,括号不用输出 Optr.pop(); i++; break; case '>': //输出栈顶元素并弹出栈顶元素 printf("%c",Optr.top()); Optr.pop(); break; } } } printf("\n"); } return 0; }
相关文章推荐
- nyoj_257郁闷的c小加(一)
- NYOJ 257 郁闷的C小加(一)(中缀式变后缀式)
- nyoj-257-郁闷的C小加(一 )中缀式变后缀式
- NYOJ 257 郁闷的C小加(一)
- nyoj 257 郁闷的C小加(一)
- nyoj-257 郁闷的C小加(一) 前缀表达式变后缀
- nyoj 467 中缀式变后缀式 nyoj 257 郁闷的C小加(一)
- nyoj-257 郁闷的C小加(一)
- NYOJ 257 郁闷的C小加(一)
- NYOJ 257 郁闷的C小加(一)
- nyoj_257 郁闷的c小加
- NYOJ 257 郁闷的C小加(一)
- NYOJ 257 郁闷的C小加(一)
- NYOJ 257 郁闷的C小加(一)
- NYOJ 257 郁闷的C小加(一)(栈和队列)(计算器)
- NYOJ 257 郁闷的C小加(一)
- nyoj257 郁闷的C小加(一)
- nyoj-257 郁闷的C小加(一)【表达式求值】
- NYOJ 257 郁闷的C小加(一) (栈 、中缀转后缀)
- NYOJ 409 郁闷的C小加(三)