用栈实现计算器c语言报告,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
#include
#include
#define UINT unsigned int
struct LOGIC
{
UINT logic,site;
};
char *text="+8*9*(8+7)+12/6-4";
int calc_exp(char *sz);
int calc_part(int a,int b,UINT w);
int main(int argc,char *argv[])
{
std::cout<
std::cin.get();
return 0;
}
int calc_exp(char *sz)
{
int calc_rt=0;
UINT szcnt=0;
LOGIC *logic;
UINT *expval;
UINT lcnt=0;
UINT ecnt=0;
bool bj=false;
UINT ti=0;
int tn=0;
int tr=0;
char *tch=0;
szcnt=sizeof(sz);
bj=false;
for(UINT i=0;i
{
switch(sz[i])
{
case '+':
case '-':
case '*':
case '/':
case '(':
case ')':
bj=false;
lcnt++;
break;
default:
if(bj==false)
{
ecnt++;
bj=true;
}
break;
}
}
if(lcnt!=0)logic=new LOGIC[lcnt];
if(ecnt!=0)expval=new UINT[ecnt];
else return 0;
bj=false;
ti=0;
tn=0;
for(UINT i=0;i
{
switch(sz[i])
{
case '+':
case '-':
case '*':
case '/':
case '(':
case ')':
switch(sz[i])
{
case '+':
logic[ti].logic=0;
break;
case '-':
logic[ti].logic=1;
break;
case '*':
logic[ti].logic=2;
break;
case '/':
logic[ti].logic=3;
break;
case '(':
logic[ti].logic=4;
break;
case ')':
logic[ti].logic=5;
break;
}
bj=false;
ti++;
break;
default:
if(bj==false)
{
if(tch!=0)
{
delete[] tch;
tch=0;
}
tch=new char[logic[ti].site-i];
for(UINT j=i;j
{
tch[j-i]=sz[j];
}
expval[tn]=atoi(tch);
tn++;
bj=true;
}
break;
}
}
if(tch!=0)
{
delete[] tch;
tch=0;
}
if(lcnt==0)return expval[0];
ti=0;
tn=-1;
while(ti
{
switch(logic[ti].logic)
{
case 0:
case 1:
if(tn!=-1)
{
calc_part(calc_rt,tr,logic[tn].logic);
tn=-1;
}
else
{
tn=ti;
tr=expval[ti];
}
break;
break;
case 2:
tr*=expval[ti];
break;
case 3:
tr/=expval[ti];
break;
case 4:
for(UINT j=ti;j
{
if(logic[j].logic==5)
{
tch=new char[logic[j].site-logic[ti].site-1];
for(UINT k=0;k
{
tch[k]=sz[logic[ti].site+1+k];
}
calc_part(tr,calc_exp(tch),logic[ti-1].logic);
ti=j;
break;
}
}
break;
}
ti++;
}
return calc_rt;
}
int calc_part(int a,int b,UINT w)
{
switch(w)
{
case 0:
return (a+b);
break;
case 1:
return (a-b);
break;
case 2:
return (a*b);
break;
case 3:
return (a/b);
break;
}
}
還沒測試過,做個構思吧,我百度了一下,你去這個地方看,那里跟你想要的更合適:
http://wenku.baidu.com/view/b841d90003d8ce2f006623cf.html
總結
以上是生活随笔為你收集整理的用栈实现计算器c语言报告,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中br.readline_jav
- 下一篇: python编程第八讲答案_小甲鱼Pyt