C++课程设计(计算器)报告_第1页
C++课程设计(计算器)报告_第2页
C++课程设计(计算器)报告_第3页
C++课程设计(计算器)报告_第4页
C++课程设计(计算器)报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VisualC++课程设计,输入数字,选择要进行的开方、温度单位的换算。(改写成可对实数操作。(算,注意算法要考虑优先级,对项。4器出题目,并数,且没有余数。合运算的分函数主要有doubleeval_exp(char*exp);//运算四则运算表达式的主函数,返回结果、voidoopcalc::sizeyunsuan();//四则运算调用的主函数、doubleget_token();//取表达式函数等。关头文件。 则运算主要代码pcalc::parser()exp_ptr=NULL;//将exp_prt赋值为空指针doubleoopcalc::eval_exp(char*exp)//计算表达式函数并返回结果doubleresult;exp_ptr=exp;//将指针指向表达式get_token();//0rror(2);return0.0;eval_exp2(result);if(*token)serror(0);returnresult;voidoopcalc::eval_exp2(double&result)//识别加减符号registercharop;doubletemp;al_exp3(result);while((op=*token)=='+'||op=='-')//判断指针指向的符号_token();al_exp3(temp);switch(op)//通过switch语句实现判断case'-':result=result-temp;ak;case'+':result=result+temp;ak;voidoopcalc::eval_exp3(double&result)//识别乘除号与百分号,方法同加减号registercharop;doubletemp;al_exp4(result);while((op=*token)=='*'||op=='/'||op=='%')get_token();temp);switch(op)case'*':result=result*temp;ak;case'/':result=result/temp;ak;case'%':result=(int)result%(int)temp;ak;voidoopcalc::eval_exp4(double&result)doubletemp,ex;registerintt;al_exp5(result);if(*token=='^')get_token();temp);ex=result;(temp==0.0)result=1.0;turn;for(t=(int)temp-1;t>0;--t)result=result*(double)ex;voidoopcalc::eval_exp5(double&result)registercharop;op=0;if((tok_type==DELIMITER)&&*token=='+'||*token=='-')op=*token;_token();al_exp6(result);if(op=='-')result=-result;voidoopcalc::eval_exp6(double&result)if((*token=='('))get_token();result);if(*token!=')')rror(1);_token();elseatom(result);voidoopcalc::atom(double&result)tch(tok_type)caseNUMBER:result=atof(token);_token();turn;ault:rror(0);voidoopcalc::serror(interror)//输入空时显示输入错误staticchar*e[]=//将一组字符串赋值给指针"SyntaxError","UnbalancedParentheses",""cout<<e[error]<<endl;//输出字符串voidoopcalc::get_token()//registerchar*temp;tok_type=0;temp=token;*temp='\0';if(!*exp_ptr)return;while(isspace(*exp_ptr))if(strchr("+-*/%^=()",*exp_ptr))tok_type=DELIMITER;*temp++=*exp_ptr++;elseif(isalpha(*exp_ptr))while(!isdelim(*exp_ptr))*temp++=*exp_ptr++;elseif(isdigit(*exp_ptr))while(!isdelim(*exp_ptr))*temp++=*exp_ptr++;tok_type=NUMBER;*temp='\0';intoopcalc::isdelim(charc)if(strchr("+-/*%^=()",c)||c==9||c=='\r'||c==0)returnreturnvoidoopcalc::sizeyunsuan()//——————————————————————————————四则运charexpstr[80];cout<<"输入0使计算终止。\n";oopcalcr(;;)cout<<"输入表达式:";79);//break;//cout<<"结果是:"<<ob.eval_exp(expstr)<<"\n\n";/*return0;*/cout<<"按任意键继续\n";tch();u();程序voidoopcalc::test()// charinput;oopcalctem("cls");cout<<"***选择你测试的题目的类型***\n";cout<<"1:加法运算\n";cout<<"2:减法运算\n";cout<<"3:除法运算\n";cout<<"4:乘法运算\n";cout<<"选择:";cout<<"=====================================\n";cin>>input;t)case'1':a.calcaddtest();ak;case'2':a.calcsubtest();ak;case'3':a.calcdivtest();ak;case'4':a.calcmulttest();ak;default:a.badinput2();ak;cout<<"是否继续测试其他题目:1是,2否!\n";intd=0;>d;tem("cls");a.test()cout<<"按任意键继续\n";tch();u();voidoopcalc::badinput2()cout<<"错误输入!\n";cout<<"按任意键继续\n";tem("cls");tch();t();voidoopcalc::calcaddtest() floatanswer1=0,input=0;doublex1,x2;for(inti=0,count1=0;i<10;i++)gaussrand()*10;gaussrand()*10;wer1=add(x1,x2);cout<<"题目"<<i+1<<''<<x1<<"+"<<x2<<"=";cin>>input;answer1)unt1++;cout<<"结果正确!\n";elsecout<<"结果错误!\n"<<"正确答案为:"<<answer1<<'\n';cout<<"你现在的得分为:\n"<<count1<<'\n';voidoopcalc::calcsubtest(){floatanswer2=0,input;doublex1,x2;for(inti=0,count2=0;i<10;i++)gaussrand()*10;gaussrand()*10;wer2=sub(x1,x2);cout<<"题目"<<i+1<<'\t'<<x1<<"-"<<x2<<"=";cin>>input;answer2)unt2++;cout<<"结果正确!\n";elsecout<<"结果错误!\n"<<"正确答案为:"<<answer2<<'\n';cout<<"你现在的得分为:\n"<<count2<<'\n';voidoopcalc::calcdivtest(){floatanswer3,input;doublex1,x2;for(inti=0,count3=0;i<10;i++)gaussrand()*10;gaussrand()*10;wer3=div((x1*x2),x2);cout<<"题目"<<i+1<<'\t'<<x1*x2<<"/"<<x2<<"=";cin>>input;answer3)unt3++;cout<<"结果正确!\n";elsecout<<"结果错误!\n"<<"正确答案为:"<<answer3<<'\n';cout<<"你现在的得分为:\n"<<count3<<'\n';voidoopcalc::calcmulttest(){floatanswer4,input;doublex1,x2;for(inti=0,count4=0;i<10;i++)gaussrand()*10;gaussrand()*10;wer4=mult(x1,x2);cout<<"题目"<<i+1<<'\t'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论