全站数据
8 4 2 0 5 8 1

用c++编写一个模拟计算器程序

建筑互联网 | 简单学习,快乐成才!         
问题更新日期:2024-10-22 19:36:24

问题描述

用c++编写一个模拟计算器程序,在线求解答
精选答案
最佳答案

#include <iostream>

#include <string>

#include <stdlib.h>

using namespace std;

const int maxn=100;

int number[maxn];

char symbolt[maxn];

string s,t;

int i,j,p;

void push()

{

p++;

symbolt[p]=s[i];

}

void pop()

{

p--;

switch (symbolt[p+1])

{

case '+':{number[p]+=number[p+1];break;}

case '-':{number[p]=number[p]-number[p+1];break;}

case '*':{number[p]=number[p]*number[p+1];break;}

case '/':{number[p]=number[p]umber[p+1];break;}

}

}

bool can()

{

if (((s[i]=='+')||(s[i]=='-'))&&(symbolt[p]!='(')) return true;

if (((s[i]=='*')||(s[i]=='/'))&&((symbolt[p]=='*')||(symbolt[p]=='/'))) return true;

return false;

}

int stringToNumber(string aStr)

{

int number = 0;

for (int i=0;i<aStr.length();i++)

{

number = number*10 + aStr[i]-48;

}

return number;

}

int main()

{

cout<<

"Input your string:

";

cin>>s;

s='('+s+')';

i=0;

p=0;

while (i<=s.length()-1)

{

while (s[i]=='(')

{

push();

i++;

}

j=i;

do

{

i++;

}

while ((s[i]>='0')&&(s[i]<='9'));

int m;

t=

"

";

int h=0;

for(m=j;m<i;m++) t=t+s[m];

number[p] = stringToNumber(t);;

do

{

if (s[i]==')')

{

while (symbolt[p]!='(') pop();

p--;

number[p]=number[p+1];

}

else

{

while (can()) pop();

push();

}

i++;

}

while ((i<=s.length())&&(s[i-1]==')'));

}

cout<<

"Result=

"<<number[0]<<endl;

}