当前位置:编程学习 > C/C++ >>

求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中的字符串排序

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,