swuetoj(表达式转换(0309)
来源:互联网 发布:两少一宽 知乎 编辑:程序博客网 时间:2024/05/29 19:03
给出一个括号算术表达式,表达式中包含:操作符:+、-、*、/、^,并且操作符的优先级依次增高;小写字母a, b, c,…, z;小括号()。算术表达式以中缀形式给出,如(a+b),我们假定表达式中没有出现连续两个以上操作符的情形,比如a*b*c,这种形式会表达成(a*(b*c))或((a*b)*c)。并且算术表达式总是以”(“开始,以“)”结束。请将给定的字条串转换成后缀形式。(见示例输入输出)
Description
T,表达式的个数(T <= 100) 以下T行,每行包括一个表达式,并且算术表达式(算术表达式长度小于200)
Input
输出转换后的字符串,每行一组测试数据
Output
3
(a+(b*c))
((a+b)*(z+x))
((a+t)*((b+(a+c))^(c+d)))
Sample Input
abc*+
ab+zx+*
at+bac++cd+^*
这道题简化了的,她都加入了括号
#include<stdio.h>#include<iostream>#include<stack>#include<string.h>using namespace std;int main(){int n;while (cin >> n){stack<char>q;for (int i = 0; i < n; i++){char a[200];cin >> a;for (int j = 0; j < strlen(a); j++){if (a[j] >= 'a'&&a[j] <= 'z')cout << a[j];//数据就输出else{if (a[j] != ')')q.push(a[j]);//不是反括号就进栈else{while (1){if (q.top() == '(')//是就出栈{q.pop();break;}else{cout << q.top();q.pop();}}}}}cout << endl;}}return 0;}
1 1
- swuetoj(表达式转换(0309)
- swustoj表达式转换(0309)
- 表达式转换
- 表达式转换
- 后缀表达式转换表达式树
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式 前缀表达式 后缀表达式 转换
- 转换为表达式
- 字符串转换为表达式
- c++表达式--类型转换
- 正则表达式转换
- 1368 表达式转换
- 表达式 中缀 后缀 转换
- 当div内嵌套子div时,margin-top合…
- 软件设计---海明码(汉明码)的计…
- (转载)android 常用URI 值得记住
- Eclipse 常用快捷键
- Intent数据传递(转)
- swuetoj(表达式转换(0309)
- Intent Action 大全
- 【转载】Uri详解之——Uri结构与代码…
- 解决某些Android Permission…
- Vue文档
- 高斯投影 北京54转WGS84
- android MediaPlayer 出…
- 在eclipse中创建struts2应用出现的麻烦以及解决办法
- 【机器学习】【基本理论】漫谈:机器学习中距离和相似性度量方法