用C++实现简单计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HUBEI NORMAL UNIVERSITY
项目名称:学生信息管理系统需求分析姓名:
学号:
班级:
一、需求描述
度这次c++课程设计作业,我们小组选择的是设计一个简单的计算器。我们平常所用的计算器都是可视化界面计算器,对于计算一些混合的四则算术运算不是很方便,所以我们此次设计的计算器则是可以进行四则混合运算,用户可以从键盘输入算式,可以进行加、减、乘、除混合运算,运算的优先级也已经考虑在内,并且用户可以按任何的运算符出现顺序进行输入,输入的计算式的长也是不限定。这样就方便了我们对于一些混合算式的计算。但是我们的程序也还存在一定问题,关于括号“()”优先级运算就没有实现。
二、系统总体分析设计
根据任务要求,程序的总体功能可以设计成如下图所示。
三、程序详细功能描述
在这次c++课程设计中,我们小组成员分工明确。在编码过程中,我们在编码过程中主要有一个counter类,counter里面一共有三个函数,分别是input()输入函数、suanfa()计算函数和show()显示函数,体现了类的封装性,另外还有一个不同函数进行程序说明。
本程序实现加、减、乘、除的基本运算,并能按照四则运算的基本法则进行运算,,在除法运算中,当被除数为零的时候,系统会报错,提示被除数不能为零,则会退出程序。
四、编码
#include
#include
using namespace std;
class counter
{
private:
int n; //计算输入数组的长度
double a[100];// 存放数据的数组
char fh[100]; //存放字符的数组
public:
input(); //输入函数
suanfa(); //四则运算“+、-、*、/、”
show(); //显示函数
};
counter ::input()
{
cout<<"请输入表达式,并且以“=”结尾"< for(int i=0;i<100;i++) { cin>>a[i]; cin>>fh[i]; if(fh[i]=='=') //"="为结束符标志 { n=i; break; } } } counter ::suanfa() { char sign; for(int j=0;j { if(fh[j]=='*') //乘法运算 { if(fh[j-1]=='+')//乘法的优先级 { a[j+1]=a[j]*a[j+1]; a[j]=0; fh[j]='+'; } else if(fh[j-1]=='-') { a[j+1]=-a[j]*a[j+1]; a[j]=0; fh[j]='+'; } else a[j+1]=a[j]*a[j+1]; } else if(fh[j]=='/') //除法运算 { if(fh[j-1]=='+')//除法的优先级 { if(a[j+1]!=0) { a[j+1]=a[j]/a[j+1]; a[j]=0; fh[j]='+'; } else { cout<<"除数为0,退出程序!"< exit(0); } } else if(fh[j-1]=='-') { if(a[j+1]!=0) { a[j+1]=-a[j]/a[j+1]; a[j]=0; } else { cout<<"除数为0,退出程序!"< exit(0); } } else { if(a[j+1]!=0) { a[j+1]=a[j]/a[j+1]; } else { cout<<"除数为0,退出程序!"< exit(0); } } } } for(int i=0;i { if(fh[i]=='+') //加法运算 a[i+1]=a[i]+a[i+1]; else if(fh[i]=='-') //减法运算 { if(a[i] { a[i+1]=-(a[i+1]-a[i]); } else a[i+1]=a[i]-a[i+1]; } } } counter ::show() //输出函数 { cout<<"该表达式的结果为:";