首页 > 其他分享 >7、带输入的复数类-加-减-乘运算符重载

7、带输入的复数类-加-减-乘运算符重载

时间:2023-04-21 16:03:44浏览次数:37  
标签:real tmp double imag 运算符 operator 复数 重载 Cmycomplex

如题,要求实现:

1、复数类含两个参数的构造函数,一个为实部,一个为虚部。

2、实现-加-减-乘运算符重载运算符重载功能,并实现返回值为复数类。

3、Show出结果。

例如输入

7 8

输出:

(10+12i)
(-4-4i)
(-11+52i)

#include<iostream>
using namespace std;
class Cmycomplex
{
private:
    double real,imag;
public:
    Cmycomplex(double r=0,double i=0);//构造函数设默认值,或者重载构造函数 
    Cmycomplex operator +(Cmycomplex &);//注意,这里只需要传一个参数,运算符+重载功能上类似自定义的.add()函数 
    Cmycomplex operator -(Cmycomplex &);
    Cmycomplex operator *(Cmycomplex &);
    void Set(double x,double y);
    void Show();
};

Cmycomplex::Cmycomplex(double r,double i)//类外定义时无需再写默认值 
{
    real=r;
    imag=i;
}

Cmycomplex Cmycomplex::operator +(Cmycomplex &z) 
{
    Cmycomplex tmp;
    tmp.real=real+z.real;
    tmp.imag=imag+z.imag;
    return tmp;
}

Cmycomplex Cmycomplex::operator -(Cmycomplex &z)
{
    Cmycomplex tmp;
    tmp.real=real-z.real;
    tmp.imag=imag-z.imag;
    return tmp;
}

Cmycomplex Cmycomplex::operator *(Cmycomplex &z)
{
    Cmycomplex tmp;
    tmp.real=real*z.real-imag*z.imag;//这里注意一下运算规则 
    tmp.imag=real*z.imag+z.real*imag;
    return tmp;
}

void Cmycomplex::Set(double x,double y)
{
    real=x;
    imag=y;
}

void Cmycomplex::Show()
{
    if(imag>0)
        cout << "(" << real << "+" << imag << "i" << ")" << endl; 
    else if(imag<0)
        cout << "(" << real << imag << "i" << ")" << endl; 
    else if(imag==0)
        cout << real << endl; 
}
//StudybarCommentBegin
int main()
{
Cmycomplex  z1(3,4),z2(7),z3;
double  x,y;
cin>>x>>y;
z2.Set(x,y);
z3=z1+z2;
cout<<"\n";
z3.Show();
z3=z1-z2;
cout<<"\n";
z3.Show();
z3=z1*z2;
cout<<"\n";
z3.Show();

}
//StudybarCommentEnd

-END

标签:real,tmp,double,imag,运算符,operator,复数,重载,Cmycomplex
From: https://www.cnblogs.com/peitongshi/p/17340696.html

相关文章

  • 6、带输入的复数类加法运算符重载
    如题,要求实现:1、复数类含两个参数的构造函数,一个为实部,一个为虚部。2、实现加法运算符重载功能,并实现返回值为复数类。3、Show出结果。#include<iostream>usingnamespacestd;classCmycomplex{private:doublereal,imag;public:Cmycomplex(doubler=0,doubl......
  • 5、复数类加法运算符重载
    如题,要求实现:1、复数类含两个参数的构造函数,一个为实部,一个为虚部。2、实现加法运算符重载功能,并实现返回值为复数类。3、Show出结果。#include<iostream>usingnamespacestd;classCmycomplex{private:intreal,imag;public:Cmycomplex(intr=0,inti=0);//......
  • 4、复数类赋值
    如题,要求实现:1、复数类含两个参数的构造函数,一个为实部,一个为虚部。2、实现Add()功能,并实现返回值为复数类。3、Show出结果。#include<iostream>usingnamespacestd;classCmycomplex{private:intreal,imag;public:Cmycomplex(intr=0,inti=0);//构造函数......
  • 3、复数类add成员函数
    如题,要求实现:1、复数类含两个参数的构造函数,一个为实部,一个为虚部2、实现Add()功能。3、Show出结果。#include<iostream>usingnamespacestd;classCmycomplex{private:intreal,imag;public:Cmycomplex(intr=0,inti=0);//构造函数设默认值,或者重载构造函......
  • 2、复数类输出实部和虚部
    如题,要求实现:1、复数类含两个参数的构造函数,一个为实部,一个为虚部2、用GetReal()GetImaginary()返回实部、虚部,均为double型#include<iostream>usingnamespacestd;classCmycomplex{private:doublereal,imag;public:Cmycomplex(doubler=0,doublei=0);//......
  • 运算符重载"+""-""*"“<<”">>"
    一、问题描述。设计一个描述三维坐标的向量类vector3D,成员如下:数据成员:三个坐标x,y,z,float类型,私有访问属性公有函数成员:三个参数均有默认值的构造函数,默认值为0,0,0;重载输入输出运算符,输出格式为(x, y, z);重载加法+、减法-、数乘*(乘数在前,乘数为float类型)这三个运算符;在主函数中定......
  • 深度学习--数学运算符
    深度学习--数学运算符基础运算符加减乘除importtorcha=torch.randint(1,10,[2,2])b=torch.randint(1,10,[2,2])print(a)#tensor([[9,7],[5,8]])print(b)#tensor([[2,4],[1,7]])#加法+torch.add(a,b)a+b#tensor([[11,11],[6,15]])torch.add(a,b)#tensor(......
  • C#基础 ref out 函数参数 不算重载的简单示例
     .NETFramework:4.7.2       IDE:VisualStudioCommunity2019        OS:Windows10x64    typesetting:Markdown codeusingSystem;namespaceConsoleApp{classProgram{staticvoidMain(string[]args){......
  • 打卡 复数的加减运算(运算符重载)
    ###复数加减(运算符重载)声明一个复数类CComplex(类私有数据成员为double型的real和image)定义构造函数,用于指定复数的实部与虚部。重载<<运算符,以格式real+imagei的格式输出当前对象(当虚部为非负数时,实部虚部中间用+号连接,当虚部为负数时,实部虚部用-号连接:如3+4i,3-4i,3+0i)。重载......
  • 关于Java中方法重载和方法重写
    方法重写是子类继承父类(默认继承Object类)后覆盖父类的方法需要保证同名同参同返回值且访问权限范围不能缩小(public>protected>default>private)publicclassFather{ publicintmethod(){ return-1; }}classSonextendsFather{ //访问范围不能小返回值方法......