C++复数的类+-*/
构造函数实现复数的加减乘除
实部虚部为0的时候有点小问题
上一次的在下面
#include<iostream>
#include<complex>
using namespace std;
class Complex
{
public:
Complex(){ r=0;i=0;}
//void init(double real,double image){ r=real;i=image; }
Complex(double real,double image){ r=real;i=image; }
void add(Complex C1,Complex C2,Complex C){
C.r=C1.r+C2.r;C.i=C1.i+C2.i;
cout<<"("; print(C1); cout<<")";
printf("+");
cout<<"("; print(C2); cout<<")";
printf("=");
cout<<"("; print(C); cout<<")";
cout<<endl;
}
void subtraction(Complex C1,Complex C2,Complex C){
C.r=C1.r-C2.r;C.i=C1.i-C2.i;
cout<<"("; print(C1); cout<<")";
printf("-");
cout<<"("; print(C2); cout<<")";
printf("=");
cout<<"("; print(C); cout<<")";
cout<<endl;
}
void multi(Complex C1,Complex C2,Complex C){
C.r=C1.r*C2.r-C1.i*C2.i;
C.i=C1.r*C2.i+C2.r*C1.i;
cout<<"("; print(C1); cout<<")";
printf("*");
cout<<"("; print(C2); cout<<")";
printf("=");
cout<<"("; print(C); cout<<")";
cout<<endl;
}
void divide(Complex C1,Complex C2,Complex C){
double moth=C2.r*C2.r+C2.i*C2.i;
C.r=C1.r*C2.r+C1.i*C2.i;
C.i=-C1.r*C2.i+C1.i*C2.r;
C.r/=moth;
C.i/=moth;
cout<<"("; print(C1); cout<<")";
printf("/");
cout<<"("; print(C2); cout<<")";
printf("=");
cout<<"("; print(C); cout<<")";
cout<<endl;
}
void print(Complex C)
{
int flag=0;
if(C.r!=0) { cout<<C.r;flag=1; }
if(C.i!=0)
{
if(flag==1)
{
if(C.i==1) cout<<"+i";
else if(C.i==-1) cout<<"-i";
else if(C.i>0) cout<<"+"<<C.i<<"i";
else if(C.i<0) cout<<C.i<<"i";
}
else
{
if(C.i==1) cout<<"i";
else if(C.i==-1) cout<<"-i";
else if(C.i>0) cout<<C.i<<"i";
else if(C.i<-0) cout<<C.i<<"i";
}
}
}
private:
double r,i;
};
int main()
{
double a,b,c,d; cin>>a>>b>>c>>d;
puts("");
Complex C1(a,b),C2(c,d),C;
C.add(C1,C2,C);
C.subtraction(C1,C2,C);
C.multi(C1,C2,C);
C.divide(C1,C2,C);
}
/*
c++
1.编写程序实现复数的加法,乘法,并将结果按照实际情况输出
2.第2章课后习题尚未完成的,将其写到作业本上,已完成了的就不用了
c++
1.未完成学习通的同学尽快完成
2.用构造函数代替普通函数实现复数的加法和乘法
*/
#include<iostream>
#include<complex>
using namespace std;
class Complex
{
public:
Complex(){ r=0;i=0;}
void init(double real,double image){ r=real;i=image; }
void add(Complex C1,Complex C2,Complex C){
C.r=C1.r+C2.r;C.i=C1.i+C2.i;
cout<<"("; print(C1); cout<<")";
printf("+");
cout<<"("; print(C2); cout<<")";
printf("=");
cout<<"("; print(C); cout<<")";
cout<<endl;
}
void subtraction(Complex C1,Complex C2,Complex C){
C.r=C1.r-C2.r;C.i=C1.i-C2.i;
cout<<"("; print(C1); cout<<")";
printf("-");
cout<<"("; print(C2); cout<<")";
printf("=");
cout<<"("; print(C); cout<<")";
cout<<endl;
}
void multi(Complex C1,Complex C2,Complex C){
C.r=C1.r*C2.r-C1.i*C2.i;
C.i=C1.r*C2.i+C2.r*C1.i;
cout<<"("; print(C1); cout<<")";
printf("*");
cout<<"("; print(C2); cout<<")";
printf("=");
cout<<"("; print(C); cout<<")";
cout<<endl;
}
void divide(Complex C1,Complex C2,Complex C){
double moth=C2.r*C2.r+C2.i*C2.i;
C.r=C1.r*C2.r+C1.i*C1.i;
C.i=-C1.r*C2.i+C1.i*C2.r;
C.r/=moth;
C.i/=moth;
cout<<"("; print(C1); cout<<")";
printf("/");
cout<<"("; print(C2); cout<<")";
printf("=");
cout<<"("; print(C); cout<<")";
cout<<endl;
}
void print(Complex C)
{
int flag=0;
if(C.r!=0) { cout<<C.r;flag=1; }
if(C.i!=0)
{
if(flag==1)
{
if(C.i==1) cout<<"+i";
else if(C.i==-1) cout<<"-i";
else if(C.i>0) cout<<"+"<<C.i<<"i";
else if(C.i<0) cout<<C.i<<"i";
}
else
{
if(C.i==1) cout<<"i";
else if(C.i==-1) cout<<"-i";
else if(C.i>0) cout<<C.i<<"i";
else if(C.i<-0) cout<<C.i<<"i";
}
}
}
private:
double r,i;
};
int main()
{
Complex C1,C2,C;
C1.init(0,1),C2.init(1,1);
C.add(C1,C2,C);
C.subtraction(C1,C2,C);
C.multi(C1,C2,C);
C.divide(C1,C2,C);
}
/*
c++
1.编写程序实现复数的加法,乘法,并将结果按照实际情况输出
2.第2章课后习题尚未完成的,将其写到作业本上,已完成了的就不用了
*/