| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 846 人关注过本帖
标题:求助:麻烦高手帮我编编啊!
只看楼主 加入收藏
lijunhua
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-4-17
收藏
 问题点数:0 回复次数:8 
求助:麻烦高手帮我编编啊!
算术表达式求值演示:
演示用算符优先法对算术表达式求值的过程.
以字符序列的形式从终端输入语法正确的,不含变量的整数表达式.实现对算术四则混合运算表达式的求值,并演示在求值中运算符栈,运算数栈,输入字符的变化过程.(是栈的应用)   谢谢了!!!
搜索更多相关主题的帖子: 麻烦 
2005-04-18 22:40
lijunhua
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-4-17
收藏
得分:0 
怎么没人回啊!我急.
2005-04-19 23:15
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 

//LinStack.h #include<iostream> #include<assert.h> using namespace std; template<typename T>class stack; template<typename T>class Node{ T info; Node<T> *link; public: Node(T data=0,Node<T> *next=NULL){ info=data; link=next;} friend class stack<T>; }; template<typename T>class stack{ Node<T> *top; public: stack(){top=NULL;} ~stack(); void MakeEmpty(); void push(T data); T pop(); bool IsEmpty()const {return top==NULL;} }; template<typename T>stack<T>::~stack(){ MakeEmpty(); } template<typename T>void stack<T>::MakeEmpty(){ Node<T> *temp; while(top!=NULL) { temp=top; top=top->link; delete temp; } } template<typename T>void stack<T>::push(T data){ top=new Node<T>(data,top); } template<typename T>T stack<T>::pop(){ assert(!IsEmpty()); Node<T> *temp; temp=top; T data=temp->info; top=top->link; delete temp; return data; } #include "lianzhan.h" #include<stdlib.h> #include<iostream> using namespace std; class Calculator{ stack<int> Nstack; stack<char> Ostack; public: void Cal(); void GetNum(int &num1,int &num2); void Computer(char opr); void Cear(); }; void Calculator::Cear(){ Nstack.MakeEmpty(); Ostack.MakeEmpty(); } void Calculator::GetNum(int &num1,int &num2){ num1=Nstack.pop(); num2=Nstack.pop(); } void Calculator::Computer(char opr){ int num1,num2; if(opr!='=') GetNum(num1,num2); switch(opr){ case '+':Nstack.push(num2+num1);break; case '-':Nstack.push(num2-num1);break; case '*':Nstack.push(num2*num1);break; case '/':Nstack.push(num2/num1);break; case '=':cout<<Nstack.pop()<<endl; } } void Calculator::Cal(){ bool b1=true,b2=true; char c1,c2,str[100]; int k=-1; while(b2){ cin>>c1; if(c1>='0'&&c1<='9'){ k++; str[k]=c1; } else{ if(k>=0) { str[k+1]='\0'; Nstack.push(atoi(str)); k=-1; } switch(c1){ case 'c': Cear();break; case '+': case '-': while(!Ostack.IsEmpty()){ c2=Ostack.pop(); Computer(c2); } Ostack.push(c1); break; case '*': case '/': while(!Ostack.IsEmpty()&&b1){ c2=Ostack.pop(); if(c2=='*'||c2=='/') Computer(c2); else{ Ostack.push(c2); b1=false; } } Ostack.push(c1); b1=true; break; case '=': while(!Ostack.IsEmpty()){ c2=Ostack.pop(); Computer(c2); } Computer(c1); break; } if(c1=='z') b2=false; } } delete []str; } void main() {Calculator cal; cal.Cal(); } 输入结束符号是Z 例如 3+4*6/2+1=Z 我的程序只是得到结果,你自己加上运算过程吧


c++/C + 汇编 = 天下无敌
2005-04-20 12:25
359951878
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-4-20
收藏
得分:0 
楼上那位麻烦在一些行给些提示撒!!毕竟菜鸟很多的
2005-04-20 12:47
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
这个不难看啊,你用笔在纸上一步一步运算就可以了

c++/C + 汇编 = 天下无敌
2005-04-20 14:23
lijunhua
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-4-17
收藏
得分:0 
谢谢了啊
2005-04-20 21:19
luyulin
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2004-12-18
收藏
得分:0 
日 又是C++
2005-04-23 22:39
陈琦
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-6-6
收藏
得分:0 
[求助]
老哥你这么厉害能不能帮小妹我编写一个程序呀我有急用不

就是用数据结构来编写校园导游咨询的程序呀小妹感谢谢你了
2005-06-08 16:31
幽幽001
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-6-8
收藏
得分:0 
发个C的啊
2005-06-09 17:12
快速回复:求助:麻烦高手帮我编编啊!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019285 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved