复数类重载加法、减法和乘法运算符

以下定义了一个复数类及其部分实现,现要求将类的构造函数以及运算符+、- 和 * 函数重载补充完整。

复数类定义:

在这里描述复数类定义。具体如下:
class complex {
	public:
		complex(float r=0,float i=0);                   // 构造函数
		complex operator+(const complex &op2) const;    //重载运算符 +
		complex operator-(const complex &op2) const;    //重载运算符 -
		complex operator*(const complex &op2) const;    //重载运算符 *
		void display() const;                           // 按数学写法输出复数
	private:
		float real;
		float imag;
};
 

裁判测试程序样例:

在这里给出复数类测试的例子。例如:
#include <iostream>
using namespace std;
class complex {
	public:
		complex(float r=0,float i=0);                   // 构造函数
		complex operator+(const complex &op2) const;    //重载运算符 +
		complex operator-(const complex &op2) const;    //重载运算符 -
		complex operator*(const complex &op2) const;    //重载运算符 *
		void display() const;                           // 按数学写法输出复数
	private:
		float real;
		float imag;
};

/* ------------------- 请在这里填写答案--------------------  */

void complex::display() const {
if(real&&imag)
if(imag1||imag-1)
cout<<real<<(imag>0?"+":"-")<<"i"<<endl;
else
cout<<real<<(imag>0?"+":"")<<imag<<"i"<<endl;
else if(real)
cout<<real<<endl;
else if (imag)
if(imag1||imag-1)
cout<<(imag>0?"":"-")<<"i"<<endl;
else
cout<<imag<<"i"<<endl;
else
cout<<0<<endl;
}

int main() {
double real,imag;
complex c,d,e;
<span class="hljs-built_in">cin</span>&gt;&gt;real&gt;&gt;imag;
<span class="hljs-function"><span class="hljs-built_in">complex</span> <span class="hljs-title">c1</span><span class="hljs-params">(real,imag)</span></span>;
<span class="hljs-built_in">cin</span>&gt;&gt;real&gt;&gt;imag;
<span class="hljs-function"><span class="hljs-built_in">complex</span> <span class="hljs-title">c2</span><span class="hljs-params">(real,imag)</span></span>;

c=c1+c2;
d=c1-c2;
e=c1*c2;
c.<span class="hljs-built_in">display</span>() ;
d.<span class="hljs-built_in">display</span>() ;
e.<span class="hljs-built_in">display</span>();

<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;

}

输入样例:

在这里给出一组输入。例如:

2 3
-4 -5
 

输出样例:

在这里给出相应的输出。例如:

-2-2i
6+8i
7-22i
 

正确代码:

complex::complex(float r,float i){
    real = r;
    imag = i;
}
complex complex::operator+(const complex &op2) const{
    complex temp;
    temp.imag = this->imag + op2.imag;
    temp.real = this->real + op2.real;
    return temp;
}
complex complex::operator-(const complex &op2) const{
    complex temp;
    temp.imag = this->imag - op2.imag;
    temp.real = this->real - op2.real;
    return temp;
}
complex complex::operator*(const complex &op2) const{
    complex temp;
    temp.imag = this->imag * op2.real+this->real*op2.imag;
    temp.real = this->real * op2.real-this->imag*op2.imag;
    return temp;
}   

原文地址:https://www.cnblogs.com/cwy545/p/12670559.html

时间: 2024-08-21 13:32:52

复数类重载加法、减法和乘法运算符的相关文章

C++习题 复数类--重载运算符2+

Description 定义一个复数类Complex,重载运算符"+",使之能用于复数的加法运算.参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意.例如,c1+c2,i+c1,c1+i均合法(设i为整数,c1,c2为复数).编写程序,分别求两个复数之和.整数和复数之和. Input 两个复数 一个复数和一个整数 一个整数和一个复数 Output 两个复数之和.复数和整数之和,整数和复数之和. Sample Input 3 4 5 -10 3 4 5 5 3 4 Sa

C++习题 复数类--重载运算符+,-,*,/

Description 定义一个复数类Complex,重载运算符"+","-","*","/",使之能用于复数的加.减.乘.除.运算符重载函数作为Complex类的成员函数.编写程序,分别求两个复数之和.差.积和商. Input 两个复数 Output 两个复数之和.差.积和商 Sample Input 3 4 5 -10 Sample Output c1+c2=(8.00,-6.00i) c1-c2=(-2.00,14.00

??复数类--重载运算符3+

请编写程序,处理一个复数与一个double数相加的运算,结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值.定义Complex(复数)类,在成员函数中包含重载类型转换运算符: operator double() { return real; } Input 一个复数与一个double数 Output d1的值和复数形式的此值 Sample Input 3 4 2.5 Sample Output d1=5.50 c2=(5.50, 0.00) /* C++代码 */ #i

第十五周oj刷题——Problem L: C++习题 复数类--重载运算符2+

Description 定义一个复数类Complex,重载运算符"+",使之能用于复数的加法运算.参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意.例如,c1+c2,i+c1,c1+i均合法(设i为整数,c1,c2为复数).编写程序,分别求两个复数之和.整数和复数之和. Input 两个复数 一个复数和一个整数 一个整数和一个复数 Output 两个复数之和.复数和整数之和,整数和复数之和. Sample Input 3 4 5 -10 3 4 5 5 3 4 Sa

第十五周oj刷题——Problem N: C++习题 复数类--重载运算符3+

Description 请编写程序,处理一个复数与一个double数相加的运算,结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值.定义Complex(复数)类,在成员函数中包含重载类型转换运算符: operator double() { return real; } Input 一个复数与一个double数 Output d1的值和复数形式的此值 Sample Input 3 4 2.5 Sample Output d1=5.50 c2=(5.50, 0.00)  

第十五周oj刷题——Problem K: C++习题 复数类--重载运算符+,-,*,/

Description 定义一个复数类Complex,重载运算符"+","-","*","/",使之能用于复数的加.减.乘.除.运算符重载函数作为Complex类的成员函数.编写程序,分别求两个复数之和.差.积和商. Input 两个复数 Output 两个复数之和.差.积和商 Sample Input 3 4 5 -10 Sample Output c1+c2=(8.00,-6.00i) c1-c2=(-2.00,14.00

C++:复数类构造函数、拷贝构造、运算符重载、析构函数

#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; class Complex { public:     void Set(double real, double image)     {         _real = real;         _image = image;     }     //构造函数      Complex(double real = 1, double image

第八周项目1-实现复数类中的运算符重载

(1)请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除. /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:Demo.cpp * 完成时间:2015年04月29日 * 版本号:v1.0 */ #include <iostream> using namespace std; class Complex { public: Complex(){real=0;imag=0;} Com

项目1-实现复数类中的运算符重载 1

(1)请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r; imag=i;} Complex operator+(const Complex &c2); Complex operator-(const Complex &c2); Complex operator*(const Complex &a