时间:2021-05-20
C++实现简单计算器的具体代码,供大家参考,具体内容如下
要求:输入一个包含+ - * /的非负整数计算表达式,计算表达式的值,每个字符之间需有一个空格,若一行输入为0,则退出程序。
输入样例:
4 + 2 * 5 - 7 / 11
输出样例:
13.36
实现代码:
#include <iostream>#include <stack> using namespace std;char str[200];//保存表达式字符串 int mat[][5]={//设置优先级1表示优先级较大,0表示较小 1,0,0,0,0, 1,0,0,0,0, 1,0,0,0,0, 1,1,1,0,0, 1,1,1,0,0, };stack<int> op;//运算符栈 stack<double> in;//数字栈 void getOp(bool &reto,int &retn,int &i){ if(i==0&&op.empty()==true){ reto=true; retn=0; return; } if(str[i]==0){ reto=true; retn=0; return; } if(str[i]>='0'&&str[i]<='9'){ reto=false; }else{ reto=true; if(str[i]=='+'){ retn=1; }else if(str[i]=='-'){ retn=2; }else if(str[i]=='*'){ retn=3; } else if(str[i]=='/'){ retn=4; } i+=2; return; } retn=0; for(;str[i]!=' '&&str[i]!=0;i++){ retn*=10; retn+=str[i]-'0'; } if(str[i]==' '){ i++; } return;} int main(int argc, char *argv[]){ while(gets(str)){ if(str[0]=='0'&&str[1]==0) break; bool retop;int retnum; int idx=0; while(!op.empty()) op.pop(); while(!in.empty()) in.pop(); while(true){ getOp(retop,retnum,idx); if(retop==false){ in.push((double)retnum); } else { double tmp; if(op.empty()==true||mat[retnum][op.top()]==1){ op.push(retnum); } else{ while(mat[retnum][op.top()]==0){ int ret=op.top(); op.pop(); double b=in.top(); in.pop(); double a=in.top(); in.pop(); if(ret==1) tmp=a+b; else if(ret==2) tmp=a-b; else if(ret==3) tmp=a*b; else tmp=a/b; in.push(tmp); } op.push(retnum); } } if(op.size()==2&&op.top()==0) break; } printf("%.2f\n",in.top()); } return 0;}测试输出:
2 + 4 * 2 - 2
8.00
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了简单实现C++复数计算器的具体代码,供大家参考,具体内容如下1.有关计算器的功能A,实现多个复数(包括实数)的加减乘除,大小比较,B.实现十
一个简单的jQuery计算器,只是实现了一个连续计算的功能Javascript计算器789+456-123*0=c/varnum0=null;varnum1=n
本文实例讲述了Python实现的简单计算器功能。分享给大家供大家参考,具体如下:使用python编写一款简易的计算器计算器效果图首先搭建计算器的面板:计算器面板
Javascript实现计算器:系列文章:JS实现计算器详解及实例代码(一)Javascript实现计算器时间功能详解及实例(二)小型JavaScript计算器
本文实例讲述了C#实现简单的计算器功能。分享给大家供大家参考,具体如下:usingSystem;usingSystem.Collections.Generic;