类与对象 CG作业1. 复数类Comple 。
问题描述】一个完整的复数由实数部分和序数部分构成,请定义一个复数类,含有两个私有属性realPart和imagPart分别表示复数的实部和虚部,三个成员函数:initComplex实现复数成员变量的初始化,add函数实现复数的求和运算并返回计算后的复数,printComplex按要求格式输出复数。
【输入形式】
第一行:第一个复数的实数数据部分 第一个复数的虚数数据部分
第二行:第二个复数的实数数据部分 第二个复数的虚数数据部分
第三行:输入一个整数(1-3),选择执行switch语句
【输出形式】
实数数据+虚数数据i
就这道题,在我们学结构体的时候出现过一次类似的,那一次是要求用结构体写的,
这个题型无非注意两点
“+”不能在开头
系数为-1,1时要省略系数
下面是代码(结构体写法)//有点丑
1 #include <iostream> 2 using namespace std; 3 struct Complex{ 4 double a,b; 5 }; 6 void inputComplex(Complex &x){ 7 cin>>x.a>>x.b; 8 } 9 Complex add(Complex c1,Complex c2){ 10 Complex sum; 11 sum.a=c1.a+c2.a; 12 sum.b=c1.b+c2.b; 13 return sum; 14 } 15 void printComplex(Complex x){ 16 if(x.a!=0&&x.b>0&&x.b!=1)cout<<x.a<<"+"<<x.b<<"i"<<'\n'; 17 else if(x.a!=0&&x.b==1)cout<<x.a<<"+"<<"i"<<'\n'; 18 else if(x.a!=0&&x.b<0)cout<<x.a<<x.b<<"i"<<'\n'; 19 else if(x.a!=0&&x.b==0)cout<<x.a<<'\n'; 20 else if(x.a==0&&x.b!=0&&x.b!=1)cout<<x.b<<"i"<<'\n'; 21 else if(x.a==0&&x.b==1)cout<<"i"<<'\n'; 22 else if(x.a==0&&x.b==0)cout<<0<<'\n'; 23 24 25 26 } 27 int main() { 28 Complex c1,c2;//定义复数变量 29 inputComplex(c1);//初始化复数变量:从键盘终端输入复数实部和虚部数据 30 inputComplex(c2); 31 printComplex(add(c1,c2));//输出复数变量c1和c2相加后的结果复数。 32 return 0; 33 }
下面是类的写法
类与对象的笔记
1 #include <iostream> 2 using namespace std; 3 class Complex{ 4 private: 5 double realPart;//实部 6 double imagPart;//虚部, 7 public: 8 void initComplex(double real,double imag){//实现复数成员变量的初始化, 9 realPart=real; 10 imagPart=imag; 11 }; 12 Complex add(Complex x){//函数实现复数的求和运算并返回计算后的复数, 13 Complex ans; 14 ans.realPart=realPart+x.realPart; 15 ans.imagPart=imagPart+x.imagPart; 16 return ans; 17 } 18 19 void printComplex();//按要求格式输出复数。 20 21 }; 22 23 void Complex::printComplex(){ 24 if(realPart!=0){ 25 cout<<realPart; 26 if(imagPart==1)cout<<"+i"<<'\n'; 27 else if(imagPart>0&&imagPart!=1)cout<<"+"<<imagPart<<"i"<<'\n'; 28 else if (imagPart<0&&imagPart!=-1)cout<<imagPart<<"i"<<'\n'; 29 else if (imagPart==-1)cout<<"-i"<<'\n'; 30 } 31 else if(realPart==0){ 32 if(imagPart==1)cout<<"+i"<<'\n'; 33 else if(imagPart!=-1&&imagPart!=1&&imagPart!=0)cout<<imagPart<<"i"<<'\n'; 34 else if (imagPart==-1)cout<<"-i"<<'\n'; 35 else if(imagPart==0)cout<<"0"<<'\n'; 36 } 37 38 39 } 40 41 int main() { 42 Complex c1,c2; 43 double real,imag; 44 cin>>real>>imag; 45 c1.initComplex(real,imag); 46 cin>>real>>imag; 47 c2.initComplex(real,imag); 48 int sel; 49 cin>>sel; 50 switch(sel){ 51 case 1: 52 c1.printComplex(); 53 break; 54 case 2: 55 c2.printComplex(); 56 break; 57 case 3: 58 Complex c=c1.add(c2);//add函数返回c1和c2相加后的结果复数对象 59 c.printComplex(); 60 } 61 return 0; 62 }