C++,设计一个复数类COMPLEX
题目:设计一个复数类COMPLEX,尽量完善该类提供的操作;然后讨论按目前知识设计的COMPLEX还有什么地方不够理想。不知道复数类COMPLEX是什么意思,所以题目无从...
题目:设计一个复数类COMPLEX,尽量完善该类提供的操作;然后讨论按目前知识设计的COMPLEX还有什么地方不够理想。
不知道复数类COMPLEX是什么意思,所以题目无从下手……希望各路大神帮帮忙T_T 展开
不知道复数类COMPLEX是什么意思,所以题目无从下手……希望各路大神帮帮忙T_T 展开
1个回答
展开全部
//C++ 复数重载的运算符-、-=、*=和/=
#include<iostream>
using namespace std;
class T{
private:
double a; //实部
double b; //虚部
public:
T(int i); //构造函数 用来从键盘接收数据
T(){};//构造函数 用来存储计算的结果
void display(); //显示复数
T operator +(T &c); //重载复数"+"
T operator -(T &c); //重载复数"-"
T operator *(T &c); //重载复数"*"
T operator /(T &c); //重载复数"/"
};
T::T(int i)
{
cout<<"实部:\n";
cin>>a;
cout<<"虚部:\n";
cin>>b;
}
T T::operator +(T &c)
{ //重载复数"+"
T temp;
temp.a=a+c.a;
temp.b=b+c.b;
return temp; //返回局部变量,函数声明不可为引用,这时返回了局部变量的地址
}
T T::operator -(T &c)
{ //重载复数"-"
T temp;
temp.a=a-c.a;
temp.b=b-c.b;
return temp;
}
T T::operator *(T &c)
{ //重载复数"*"
T temp;
temp.a=a*c.a-b*c.b;
temp.b=a*c.b+b*c.a;
return temp;
}
T T::operator /(T &c)
{ //重载复数"/"
T temp;
double d;
d=c.a*c.a+c.b*c.b;
temp.a=(a*c.a+b*c.b)/d;
temp.b=(c.a*b-a*c.b)/d;
return temp;
}
void T::display()//显示复数
{
cout << a;
if(b>=0) cout<<'+';
cout<<b<<'i'<<endl;
}
int main()
{
/* while(1)
{
cout<<"请输入第一个数:\n";//定义2个复数对象
T A(1);
cout<<"请输入第二个数:\n";
T B(1);
cout<<"加的结果为:"<<endl;
(A+B).display();
cout<<"减的结果为:"<<endl;
(A-B).display();
cout<<"乘的结果为:"<<endl;
(A*B).display();
cout<<"除的结果为:"<<endl;
(A/B).display();
cout<<"是否对其他两个复数进行运算(y或n):\n";
getchar();
if(getchar()=='n') break;
}
*/
while(1)
{
int choice;
cout<<"请输入第一个数:\n";//定义2个复数对象
T A(1);
cout<<"请输入第二个数:\n";
T B(1);
while(1)
{
cout<<"\t\t\t1.加法\t\t\t\n";
cout<<"\t\t\t2.减法\t\t\t\n";
cout<<"\t\t\t3.乘法\t\t\t\n";
cout<<"\t\t\t4.除法\t\t\t\n";
cout<<"\t\t\t5.退出\t\t\t\n";
cout<<"请选择:"<<endl;
cin>>choice;
switch(choice)
{
case 1:cout<<"加的结果为:"<<endl;(A+B).display();break;
case 2:cout<<"减的结果为:"<<endl;(A-B).display();break;
case 3:cout<<"乘的结果为:"<<endl;(A*B).display();break;
case 4:cout<<"除的结果为:"<<endl;(A/B).display();break;
case 5:break;
default :;
}
cout<<"是否继续(y或n)";
getchar();
if(getchar()=='n') break;
}
cout<<"是否对其他两个复数进行运算(y或n):\n";
getchar();
if(getchar()=='n') break;
}
return 0;
}
#include<iostream>
using namespace std;
class T{
private:
double a; //实部
double b; //虚部
public:
T(int i); //构造函数 用来从键盘接收数据
T(){};//构造函数 用来存储计算的结果
void display(); //显示复数
T operator +(T &c); //重载复数"+"
T operator -(T &c); //重载复数"-"
T operator *(T &c); //重载复数"*"
T operator /(T &c); //重载复数"/"
};
T::T(int i)
{
cout<<"实部:\n";
cin>>a;
cout<<"虚部:\n";
cin>>b;
}
T T::operator +(T &c)
{ //重载复数"+"
T temp;
temp.a=a+c.a;
temp.b=b+c.b;
return temp; //返回局部变量,函数声明不可为引用,这时返回了局部变量的地址
}
T T::operator -(T &c)
{ //重载复数"-"
T temp;
temp.a=a-c.a;
temp.b=b-c.b;
return temp;
}
T T::operator *(T &c)
{ //重载复数"*"
T temp;
temp.a=a*c.a-b*c.b;
temp.b=a*c.b+b*c.a;
return temp;
}
T T::operator /(T &c)
{ //重载复数"/"
T temp;
double d;
d=c.a*c.a+c.b*c.b;
temp.a=(a*c.a+b*c.b)/d;
temp.b=(c.a*b-a*c.b)/d;
return temp;
}
void T::display()//显示复数
{
cout << a;
if(b>=0) cout<<'+';
cout<<b<<'i'<<endl;
}
int main()
{
/* while(1)
{
cout<<"请输入第一个数:\n";//定义2个复数对象
T A(1);
cout<<"请输入第二个数:\n";
T B(1);
cout<<"加的结果为:"<<endl;
(A+B).display();
cout<<"减的结果为:"<<endl;
(A-B).display();
cout<<"乘的结果为:"<<endl;
(A*B).display();
cout<<"除的结果为:"<<endl;
(A/B).display();
cout<<"是否对其他两个复数进行运算(y或n):\n";
getchar();
if(getchar()=='n') break;
}
*/
while(1)
{
int choice;
cout<<"请输入第一个数:\n";//定义2个复数对象
T A(1);
cout<<"请输入第二个数:\n";
T B(1);
while(1)
{
cout<<"\t\t\t1.加法\t\t\t\n";
cout<<"\t\t\t2.减法\t\t\t\n";
cout<<"\t\t\t3.乘法\t\t\t\n";
cout<<"\t\t\t4.除法\t\t\t\n";
cout<<"\t\t\t5.退出\t\t\t\n";
cout<<"请选择:"<<endl;
cin>>choice;
switch(choice)
{
case 1:cout<<"加的结果为:"<<endl;(A+B).display();break;
case 2:cout<<"减的结果为:"<<endl;(A-B).display();break;
case 3:cout<<"乘的结果为:"<<endl;(A*B).display();break;
case 4:cout<<"除的结果为:"<<endl;(A/B).display();break;
case 5:break;
default :;
}
cout<<"是否继续(y或n)";
getchar();
if(getchar()=='n') break;
}
cout<<"是否对其他两个复数进行运算(y或n):\n";
getchar();
if(getchar()=='n') break;
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询