一、编写复数类CMyComplex。实现各种常用构造函数,实现整数、实数向复数的转化函数,实现整数、实数和复数以及复数之间的加、减、乘、除各种运算,并编写输出的成员函数。在主函数中测试。
设计一个MyComplex(复数)类
1、基本信息:实部、虚部;
其中:基本信息为private属性,成员函数为public属性;
2、MyComplex类有多个构造函数:缺省构造函数、带参数的构造函数、带默认参数的构造函数
3、基本功能:
1)若干set和get函数,用来设置和获取复数;
2)可以从键盘输入复数;
3)定义成员函数,分别计算两个复数的和、差、积、商并化简;
4)其他成员函数,完成你想加进去的功能
[实验提示]
1、注意带参数的构造函数和带默认参数的构造函数的声明与定义;
2、从键盘输入基本信息,调用带参数的构造函数生成分数对象;
3、当输入数据为不合理数据时,提示用户输入错误;
[测试数据]
自己选定几个复数在主函数中进行功能测试,尽量覆盖每种可能的情况。
这个是我项目中用到过的,基本能满足你的要求
//#include "stdafx.h"
#include <iostream>
class comp
{
double a;
double b;
public:
comp(double x=0,double y=0):a(x),b(y){}
comp operator+(comp &x)
{
comp c;
c.a=a+x.a;
c.b=b+x.b;
return c;
}
comp operator-(comp &x)
{
comp c;
c.a=a-x.a;
c.b=b-x.b;
return c;
}
comp operator*(comp &x)
{
comp c;
c.a=a*x.a-b*x.b;
c.b=a*x.b+b*x.a;
return c;
}
comp operator/(comp &x)
{
comp c;
double temp;
temp=x.a*x.a+x.b*x.b;
if (temp==0)
printf("can't div zero!");
c.a=(a*x.a+b*x.b)/temp;
c.b=(b*x.a-a*x.b)/temp;
return c;
}
void input(double x,double y)
{a=x;
b=y;
}
void output()
{printf("%f+%fi\n",a,b);
}
double getreal()
{
return a;
}
double getimag()
{
return b;
}
};
再看看,我加了
//#include "stdafx.h"
/**
*复数类
*/
#include <iostream>
class comp
{
double a;//实部
double b;//虚部
public:
/*
*构造函数
*/
comp(double x=0,double y=0):a(x),b(y){}
/*
*复数相加
*/
comp operator+(comp &x)
{
comp c;
c.a=a+x.a;
c.b=b+x.b;
return c;
}
/*
*复数相减
*/
comp operator-(comp &x)
{
comp c;
c.a=a-x.a;
c.b=b-x.b;
return c;
}
/*
*复数相乘
*/
comp operator*(comp &x)
{
comp c;
c.a=a*x.a-b*x.b;
c.b=a*x.b+b*x.a;
return c;
}
/*
*复数相除
*/
comp operator/(comp &x)
{
comp c;
double temp;
temp=x.a*x.a+x.b*x.b;
if (temp==0)
printf("can't div zero!");
c.a=(a*x.a+b*x.b)/temp;
c.b=(b*x.a-a*x.b)/temp;
return c;
}
/*
*重新设置实部和虚部
*/
void input(double x,double y)
{a=x;
b=y;
}
/*
*输出
*/
void output()
{
cout<<"实部:"<<a<<endl;
cout<<"虚部:"<<b<<endl;
}
/*
*得到实部
*/
double getreal()
{
return a;
}
/*
*得到虚部
*/
double getimag()
{
return b;
}
};
思路 主要就是重载运算符号。然后类的思想。
这这个文件单独保存一个.h的头文件 ,然后用到的地方直接引用它就行了。如命名:Ccomplex.h
参考C++标准库 complex