前言
一般的制作计算器都会比较不智能,会有很严格的输入格式
在这里,我做了一个简化,使的即使没有严格地输入输出格式,也能够达到计算器的效果
比如说:下面这些例子
这里就是用字符串读入了一行,然后对字符串进行处理,得到了最后结果,那么是如何做到的呢?
思路
读入一行之后,前面有部分全是数字,这样他就为操作数1,后面有部分全为数字,这样就是操作数2
中间有符号为+ - * / 之一,这样也能把它存起来
这样就能达到分离数据的目的,然后把分离出来的数据还原,最后做加减运算即可
代码
// count1保存操作数1的长度,count2保存操作数2的长度,sum1保存操作数1的值,sum2保存操作数2的值
#include <iostream>
using namespace std;
int num1[10],num2[10]; //保存操作数1和操作数2
char temp; //保存运算符
void main()
{
int pos,count1=0,count2=0,sum1=0,sum2=0;
char s[100];
cin.getline(s,100); //读入一行
for(int i=0;i<100;i++){
if(s[i]>='0' && s[i]<='9'){
num1[count1++] = s[i]-'0'; //获得操作数1
}
if(s[i]=='+' ||s[i]=='-' ||s[i]=='*'||s[i]=='/'){
temp=s[i]; //获得运算符
pos = i; //pos保存下标
break;
}
}
for(i=pos+1;i<100;i++){
if(s[i]>='0' &&s[i]<='9'){
num2[count2++] = s[i]-'0'; //获得操作数2
}
}
for(i=0;i<count1;i++){
sum1*=10;
sum1+=num[i]; //算出操作数1
}
for(i=0;i<count2;i++){
sum2*=10;
sum2+=num[i]; //算出操作数2
}
//展示结果模块
if(temp=='+') cout<<sum1+sum2<<endl;
if(temp=='-') cout<<sum1-sum2<<endl;
if(temp=='*') cout<<sum1*sum2<<endl;
if(temp=='/') cout<<sum1/sum2<<endl;
}