简单计算器

来源:互联网 发布:软件什么是架构 编辑:程序博客网 时间:2024/05/15 08:42

题目描述

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

输入描述

输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出描述

在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例

1+2*10-10/2=

输出样例

10

提示


笨方法:
   等研究了数九结构的方法后再来进行修改;
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;int main(){   char a[1010];   scanf("%s",a);   int flag=0;   int len=strlen(a);   for(int i=0;i<len-1;i++)   {       if(a[i]=='/'&&a[i+1]==0)       {           flag=1;           break;       }   }   if(flag)   {       printf("ERROR\n");   }   else   {       int sum=0;    for(int i=0;i<len;i++)   {    if(a[i]>='0'&&a[i]<='9')        sum=sum*10+(a[i]-'0');    else       break;   }   for(int i=1;i<len;i++)   {       if(a[i]=='+')           {               int sum1=0;               for(int j=i+1;j<len;j++)               {                   if(a[j]>='0'&&a[j]<='9')                       sum1=sum1*10+(a[j]-'0');                   else                       break;               }               sum+=sum1;            }        else if(a[i]=='-')        {            int sum2=0;               for(int j=i+1;j<len;j++)               {                   if(a[j]>='0'&&a[j]<='9')                   sum2=sum2*10+(a[j]-'0');                       else                  break;               }            sum-=sum2;        }        else if(a[i]=='*')        {               int sum3=0;               for(int j=i+1;j<len;j++)               {                   if(a[j]>='0'&&a[j]<='9')                   sum3=sum3*10+(a[j]-'0');                       else                  break;               }            sum*=sum3;        }        else if(a[i]=='/')           {               int sum4=0;               for(int j=i+1;j<len;j++)               {                   if(a[j]>='0'&&a[j]<='9')                   sum4=sum4*10+(a[j]-'0');                       else                  break;               }            sum/=sum4;           }        else  if(a[i]=='=')        {            printf("%d\n",sum);       }   }   }  return 0;}