本文实例为大家分享了简单实现C++复数计算器的具体代码,供大家参考,具体内容如下
1.有关计算器的功能
A,实现多个复数(包括实数)的加减乘除,大小比较,
B.实现十进制实数的进制转换,可以转换任意进制
2.有关设计的原理
A.复数计算的部分,采用运算符的重载,进行复数的加减乘除以及大小比较
对于输入输出,(>>和<<),加减乘除运算进行重载。
输入的重载,实现a+bi形式的复数的输入。
输出的重载,实现实数的输出(实现特殊的只输出实部虚部之类的)。
加减乘除的重载,实现有关复数的运算。
B.进制转换的部分,采用进制转换的方法,实现10进制的任意进制转换。辗转相除,记录每次的余数,存储在数组中来记录转换得到的数字
3.有关设计的特点
A.采用函数对所实现功能进行封装。
B.采用运算符的重载,使复数运算更加方便
C.考虑所有的输入输出情况,对选择的操作,输入复数的类型等进行判断与相应的处理
D.程序在完成以后,接受大家建议,规范代码格式,自己在制作过程有所收获也有所学习。
下面是有关代码的实现:
#include#include #include #include #include #include #include #define EPS 1e-5 //定义精度常数 using namespace std; //使用标准空间命名std namespace NameCCom //定义命名空间NameCCom { class CCom //定义一个CCom类 { public: double Real,Image;//实部和虚部 CCom(double real=0,double image=0) //构造函数 { Real=real; Image=image; } friend istream & operator>>(istream &is,CCom &com); //重载输入 friend ostream & operator<<(ostream &os,CCom &com); //重载输出 CCom operator+(CCom &com); //加法重载 CCom operator-(CCom &com); //减法重载 CCom operator*(CCom &com); //乘法重载 CCom operator/(CCom &com); //除法重载 CCom operator+=(CCom &com); //加法赋值重载 CCom operator-=(CCom &com); //减法赋值重载 CCom operator*=(CCom &com); //乘法赋值重载 CCom operator/=(CCom &com); //除法赋值重载 }; struct User //定义用户结构体类型 { char szName[20]; //用户名 }user; //定义全局变量 int CCom::operator>(CCom &com) //重载运算符">",比较模的大小 { if(mod()>com.mod()) return 1; //若大,则返回1 else return 0; //否则,则返回0 } int CCom::operator<(CCom &com) //重载运算符"<",比较模的大小 { if(mod() >(istream &is,CCom &com) //重载输入,可以输入a+bi的形式 { cout<<"请输入复数:"; char s[80]; is>>s; //用字符串的形式接受复数 int len=strlen(s); //求出字符串的长度 int n=0,sign=1; //n为当前从字符串中提取出来的数字,初始化为0;sign是标记符号,初始化为正 com.Image=com.Real=0; for(int k=0;k '9') && (s[k]!='+' && s[k]!='-' && s[k]!='i')) { cout<<"error"< ='0' && s[k]<='9') //如果当前字符在0~9之间,将数字字符转换成数字数值 { n=n*10+s[k]-'0'; k++; } } if(s[len-1]!='i' && n!=0) //如果最后一个字符不是'i',表示复数对象内只有实部,没有虚部 { com.Real=n*sign; } return is; } ostream & operator<<(ostream &os,CCom &com) //重载输入 { if(fabs(com.Image) 0) os< >num1; cout<<"第二个复数:"; cin>>num2; sum=num1+num2; cout<<"第三个复数:"; cin>>num1; int i=4; while(!(num1==Zero)) { sum=sum+num1; cout<<"第"<>num1; i++; } cout<<"加法结果是:"< >num1; cout<<"第2个复数:"; cin>>num2; sub=num1-num2; cout<<"第3个复数:"; cin>>num1; int i=4; while(!(num1==Zero)) { sub=sub-num1; cout<<"第"<>num1; i++; } cout<<"减法结果是:"<>num1; cout<<"第二个复数:"; cin>>num2; mul=num1*num2; cout<<"第三个复数:"; cin>>num1; int i=4; while(!(num1==Zero)) { mul*=num1; cout<<"第"<>num1; i++; } cout<<"乘法结果是:"< >num1; cout<<"第二个复数:"; cin>>num2; div=num1/num2; cout<<"第三个复数:"; cin>>num1; int i=4; while(!(num1==Zero)) { div/=num1; cout<<"第"<>num1; i++; } cout<<"除法结果是:"<>num1; cout<<"第二个复数n"; cin>>num2; if(num1==num2) cout<<"这两个复数相等n"; else if(num1>num2) cout< >n; cout<<"输入要转换的进制:n"; cin>>p; cout<<"("< =1;k--)//输出转换后的序列 { if(s[k]>=10) //若为十六进制等则输出相对应的字母 cout<<(char)(s[k]+55); else //否则直接输出数字 cout< >szName; system("cls"); do { system("cls"); cout<<"t这是一个计算器,可实现以下功能,请按对应的按键(0-6)nnn"; cout<<"t*----------Hpioneer小计算器菜单---------*n"; cout<<"t| 1:多个复数加法,以0结束 |n"; cout<<"t| 2:多个复数减法,以0结束 |n"; cout<<"t| 3:多个复数乘法,以0结束 |n"; cout<<"t| 4:多个复数除法,以0结束 |n"; cout<<"t| 5:复数比较 |n"; cout<<"t| 6:进制转换 |n"; cout<<"t| 0:退出程序 |n"; cout<<"t| 请您选择: |n"; cout<<"t*---------------------------------------*n"; } } using namespace NameCCom; int main(void) //主函数开始,void可以不写 { int h; output(); cin>>h;//每步操作 if(h==1) //用户选1则调用Add()函数 Add(); else if(h==2) //用户选2则调用Sub()函数 Sub(); else if(h==3) //用户选3则调用Mul()函数 Mul(); else if(h==4) //用户选4则调用Di v()函数 Div(); else if(h==5) //用户选6则调用Compare()函数 Compare(); else if(h==6) //用户选7则调用函数Jinzhi()函数 Jinzhi(); else if(h==0) cout<<"非常感谢您的使用n"; else break; } return 0; }
以上就是本文的全部内容,希望对大家学习C++程序设计有所帮助。



