日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用栈实现计算器c语言报告,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...

發布時間:2024/9/27 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用栈实现计算器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语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。