1、进制转换;三角函数实现;退出程序。用户首先进行选择,如果输入正确,则根据选择调用相应的函数,否则提示用户重新进行输入,直到输入正确。(5)主程序: 主程序比较简单,只是调用了menu()函数。(6)程序中用到的其他函数 system(“pause”);表示按任意键继续; system(“cls”);表示将屏幕上的所有内容清除,为了让界面整洁。5.关键技术说明(1)加减乘除平方进本运算模块对于字符串和整数之间的转化利用了c语言中的函数atoi();通过调用类中的getnum()函数来判断除数是否为0。在进行进制转换时用到了栈,直接运用STL中的stack,包含在头文件stack中。具体方法是:首
2、先将要进行转换的数转化成10进制,然后将10进制转化成目的进制。转化成10进制的代码:基本思想是:对于n进制数abcdefg,转换成10进制数为:a*n6 + b*n5 + c*n4 + d*n3 +e*n2 + f*n1 + g*n0将十进制数m转换成n进制的思想是:不断将m%n放入栈中,直到m=0,然后依次输出栈的栈顶元素,直到栈为空。考虑到对于16进制的数,数中可能会输入ABCDEF或者abcdef,所以将输入的数字转换成字符串形式,并进行判断转换。首先定义:char a86=log,log10sinasincosacostanatan;数组中包含的是三角函数。对数组进行遍历,同时通过函
3、数strcmp()判断要计算的函数是否在其中,有的话调用函数直接进行计算,否则,提示用户重新进行输入。类中三角函数的实现直接调用了C语言中math.h头文件中的函数。通过函数atof()将字符串转化为flaot类型的数。6.源代码calculator.h#ifndef CALCULATOR_H#define CALCULATOR_Hclass calculatorprivate: int num; double num2; int scal;/几进制 char tri10;/三角函数 float ang;/弧度public: calculator(int a);/加减乘除 calculator
4、(double a);/计算除法 calculator(int a,int b);/进制转换 calculator(float a,char *s); void show(); void show2();/除法输出 int getnum(); calculator operator +(const calculator &c2);/加 calculator operator -(const calculator &/减 calculator operator *(const calculator &/乘 calculator operator /(const calculator &/除 ca
5、lculator operator (const calculator &/平方 void scalechange(); void TriFunction(); void Cos(); void Sin(); void Log(); void Log10(); void Asin(); void Acos(); void Tan(); void Atan();#endifcalculator.cpp#includeiomanipcstdlibstackcmathcstring#include calculator.husing namespace std;void menu();calcula
6、tor:calculator(int a) num=a;calculator(double a) num2=a;calculator(int a,int b) scal=b;calculator(float a,char *s) ang=a; strcpy(tri,s);void calculator:show() cout结果为:numendl;show2()setprecision(3)num2n; if(scal=16)/转换成十进制 for(i=strlen(num3)-1;i=0;i-) if(num3i=A & num3iaf else0); j*=scal; else/转换成十进
7、制 a+=j*(num3i- stacks; while(a) s.push(a%n); a/=n;scal 进制数 num3转换成 n 进制数为: while(!s.empty() couts.top() s.pop(); system(pausecls menu();Cos()计算结果为:cos(ang)Sin()sin(ang)Log()log(ang)Log10()log10(ang)Asin()asin(ang)Acos()acos(ang)Tan()tan(ang)Atan()atan(ang)TriFunction() int i,j=0; char a86= for(i=0;i
8、8;i+) if(strcmp(ai,tri)=0) j=1; break; if(j=0)您输入的三角函数表达式有误!请重新进行输入! system( menu(); else switch(i) case 0: Log(); case 1: Log10(); case 2: Sin(); case 3: Asin(); case 4: Cos(); case 5: Acos(); case 6: Tan(); case 7: Atan();main.cppvoid menu() int n;endl 欢迎使用本计算器,请根据提示选择相应的功能 1、加减乘除平方基本运算。 2、进制转换。 3
9、、三角函数实现。 0、退出程序。 请做出你的选择: switch(n) case 1: char express100; char a100,b100; char c; int i,count;cout请输入加减乘除表达式(表达式形式为ab= 代表加减乘除平方,以回车表示结束)示例:(1)23+45 (2)23-22 (3)4*4 (4)12/3 (5)42 coutexpress; count=0; for(i=0;strlen(express); if(expressi=+ | expressi=-*/ break; else acount+=expressi; c=expressi; i
10、+; for(; bcount+=expressi; calculator c1(atoi(a); calculator c2(atoi(b); switch(c) case calculator c3(c1+c2); c3.show(); system( menu(); calculator c3(c1-c2); calculator c3(c1*c2); if(c2.getnum()=0) coutmm; calculator c(m,mm); c.scalechange(); case 3: int i,j; char exp100;请输入三角函数表达式(示例:sin(0),cos(0)
11、,tan(0),log(0)等):本计算器计算的类型是弧度的三角函数。exp; char a10,b10; memset(a,0,sizeof(a); memset(b,0,sizeof(b); j=0;strlen(exp); if(expi=( aj+=expi;) bj+=expi; calculator c(atof(b),a); c.TriFunction(); case 0:谢谢使用本计算器,程序作者:韩邵杰 exit(0); break; default:您的选择有误!请重新进行选择!int main() return 0;7.测试(主界面及各功能模块的运行图及说明)(1)程序运行后的界面:(2)选择1进行加减乘除平方运算:(3)按任意键继续之后回到界面(1),然后减输入乘除平方进行测试: (4)除法运算除数为0时:(5)进制转换:10进制转换成16进制:十进制转换成2进制:8进制转换成2进制:2进制转换成16进制:16进制转换成8进制:(6)三角函数测试:(7)选择0退出程序:8.系统评价及展望
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1