求C++程序代码:建立 一个复数类 Complex
求C++程序代码:
建立 一个复数类 Complex,要求
含两个成员:real,imaginary: float
构造函数
不带参数构造: 0+0i
以实部和虚部构造
重载拷贝构造
成员函数
输出这个复数
求模
求辐角
设置实部
设置虚部
求实部
求虚部
类的使用
在main()中以四种方式构造不同对象
对每个对象,调用成员函数
追问:你的代码有点复杂,我们还没有学到那么深。这是我写的代码,有错误。帮忙看看问题出在哪里。最好是能修改一下。
#include<iostream>
#include<cmath>
using namespace std;
class Complex{
public:
Complex();
Complex(float,float);
Complex(Complex &Complex);
void put_real(); //输入复数的实部
void put_imaginary(); //输入复数的虚部
void out_real(); //输出复数的实部
void out_imaginary(); //输出复数的虚部
void out_size(); //输出复数的模
void out_view(); //输出复数的辐角
void out_it(); //输出这个复数
private:
float real,imaginary;
};
Complex::Complex(){
real=0;
imaginary=0;
}
Complex::Complex(float a,float b){
a=real;
b=imaginary;
}
void Complex::put_real(){
cout<<"请输入复数的实部"<<endl;
cin>>real>>endl;
}
void Complex::put_imaginary(){
cout<<"请输入复数的虚部"<<endl;
cin>>imaginary>>endl;
}
void Complex::out_real(){
cout<<"复数的实部为:"<<real<<endl;
}
void Complex::out_imaginary(){
cout<<"复数的虚部为:"<<imaginary<<endl;
}
void Complex::put_real(float a){
cout<<"请输入复数的实部"<<endl;
cin>>a>>endl;
}
void Complex::put_imaginary(float b){
cout<<"请输入复数的实部"<<endl;
cin>>b>>endl;
}
void Complex::out_real(float a){
cout<<"复数的实部为:"<<a<<endl;
}
void Complex::out_real(float b){
cout<<"复数的虚部为:"<<b<<endl;
}
void Complex::out_size(){
cout<<"该复数的模为:"<<sqrt(real*real+ imaginary*imaginary)<<endl;
}
void Complex::out_view(){
cout<<"该复数的辐角为:"<<(atan real/imaginary)<<endl;
}
void Complex::out_it(float a,float b){
cout<<"该复数为:"<<a<<"+"<<b<<"i"<<endl;
}
void main(){
float a=0,b=0;
Complex();
Complex(float,float);
Complex(Complex &Complex);
Complex Com;
Com.put_real(); //输入复数的实部
Com.put_imaginary(); //输入复数的虚部
Com.out_real(); //输出复数的实部
Com.out_imaginary(); //输出复数的虚部
Com.out_size(); //输出复数的模
Com.out_view(); //输出复数的辐角
Com.out_it(); //输出这个复数
}
答案:#include<iostream>
#include<cmath>
using namespace std;
class Complex
{
public:
Complex();
Complex(float,float);
//Complex(Complex &Complex); //这个拷贝构造函数你下面没有定义 对象名不能与类名相同,改成小写
Complex(Complex &complex);
void put_real1(float); //获得复数的实部
void put_imaginary1(float); //获得复数的虚部 put应该是用于输出函数名的,严格来说应用Set_,你自己改吧
void out_real2(); //输出复数的实部 你的函数名都有同名的,编译器怎么区分?加个1和2
void out_imaginary2(); //输出复数的虚部
void out_size(); //输出复数的模
void out_view(); //输出复数的辐角
void out_it(); //输出这个复数
private:
float real,imaginary;
};Complex::Complex()
{
real=0;
imaginary=0;
}
Complex::Complex(float a,float b)
{
//a=real;
//b=imaginary; 赋值错误,改为:
real=a;
imaginary=b;
}
Complex::Complex(Complex &complex) //拷贝构造函数定义
{
real=complex.real;
imaginary=complex.imaginary;
}
/*void Complex::put_real()
{
cout<<"请输入复数的实部"<<endl;
cin>>real;
}
void Complex::put_imaginary(){
cout<<"请输入复数的虚部"<<endl;
cin>>imaginary;
}
void Complex::out_real()
{
cout<<"复数的实部为:"<<real<<endl;
}
void Complex::out_imaginary()
{
cout<<"复数的虚部为:"<<imaginary<<endl;
}*/ //这4个函数跟下面的重复了,是多余的
void Complex::put_real1(float a)
{
//cout<<"请输入复数的实部"<<endl;
//cin>>a>>endl; // cin不需要换行符endl
real=a; //用户的输入可以放到主函数比较简单,这里只需要获得输入就行了
}
void Complex::put_imaginary1(float b)
{
//cout<<"请输入复数的实部"<<endl;
//cin>>b>>endl; // cin不需要换行符endl
imaginary=b; //用户的输入可以放到主函数比较简单,这里只需要获得输入就行了
} //这两个成员函数跟你在类里声明的不一样,你声明的是无参的,定义就不能有参数,类里帮你改成有参数的了
void Complex::out_real2(){ //不需要参数,类里你声明的就是无参的
cout<<"复数的实部为:"<<real<<endl;
}
void Complex::out_imaginary2() //不需要参数
{
cout<<"复数的虚部为:"<<imaginary<<endl;
}
void Complex::out_size()
{
cout<<"该复数的模为:"<<sqrt(real*real+imaginary*imaginary)<<endl;
}
void Complex::out_view()
{
cout<<"该复数的辐角为:"<<atan(real/imaginary)<<endl; //修改后的
}
//void Complex::out_it(float a,float b) 这句也是一样,定义与声明不同
void Complex::out_it()
{
cout<<"复数="<<real<<"+"<<imaginary<<"i"<<endl;
}
void main()
{
//float a=0,b=0; 不需要赋值
float a,b;
//Complex(); 没有对象
Complex Com1; //定义对象Com1的同时自动调用构造函数
cout<<"初始化的复数1为:";
Com1.out_it();
//Complex(float,float); 实参都没有,怎么传值给形参。实参不需要数据类型,只要一个具体的数
Complex Com2(1.0,2.0); //调用带参数的构造函数
cout<<"初始化的复数2为:";
Com2.out_it();
//Complex( &Complex); 你应该给一个具体的对象让它拷贝
Complex Com3(Com2); //拷贝对象Com2
cout<<"拷贝复数2的复数为:";
Com3.out_it();
//Complex Com;Complex
cout<<"请您输入一个复数的实部和虚部:"<<endl;
cin>>a>>b;
Complex Com4;
cout<<"您输入的复数信息如下:"<<endl;
Com4.put_real1(a); //取得复数的实部
Com4.put_imaginary1(b); //取得复数的虚部
Com4.out_real2(); //输出复数的实部
Com4.out_imaginary2(); //输出复数的虚部
Com4.out_size(); //输出复数的模
Com4.out_view(); //输出复数的辐角
Com4.out_it(); &nbs
上一个:此C++程序运行的结果为何不出来?
下一个:C++ Bulider 如何将Memo中的字符串排序