2535: C++复数运算符重载(+与<<)

时间限制: 1 Sec  内存限制: 128 MB

提交: 867  解决: 532

题目描述

定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算与输出操作。

(1)参加运算的两个运算量可以都是类对象,也可以其中有一个是实数,顺序任意。例如,c1+c2,d+c1,c1+d均合法(设d为实数,c1,c2为复数)。

(2)输出的算数,在复数两端加上括号,实部和虚部均保留两位小数,如(8.23+2.00i)、(7.45-3.40i)、(-3.25+4.13i)等。

编写程序,分别求两个复数之和、整数和复数之和,并且输出。

请在下面的程序段基础上完成设计:

#include <iostream>

#include <iomanip>

using namespace std;

class Complex

{

public:

Complex():real(0),imag(0) {}

Complex(double r,double i):real(r),imag(i) {}

Complex operator+(Complex &);

Complex operator+(double &);

friend Complex operator+(double&,Complex &);

friend ostream& operator << (ostream& output, const Complex& c);

private:

double real;

double imag;

};

//将程序需要的其他成份写在下面,只提交begin到end部分的代码

//******************** begin ********************

//********************* end ********************

int main()

{

//测试复数加复数

double real,imag;

cin>>real>>imag;

Complex c1(real,imag);

cin>>real>>imag;

Complex c2(real,imag);

Complex c3=c1+c2;

cout<<"c1+c2=";

cout<<c3;

//测试复数加实数

double d;

cin>>real>>imag;

cin>>d;

c3=Complex(real,imag)+d;

cout<<"c1+d=";

cout<<c3;

//测试实数加复数

cin>>d;

cin>>real>>imag;

c1=Complex(real,imag);

c3=d+c1;

cout<<"d+c1=";

cout<<c3;

return 0;

}

输入

一个复数的实部和虚部,另一个复数的实部和虚部 

一个复数的实部和虚部,一个实数 

一个实数,一个复数的实部和虚部

输出

两个复数之和、复数和实数之和,实数和复数之和。

样例输入

3 4 5 -10
3 4 5
5 3 4

样例输出

c1+c2=(8.00-6.00i)
c1+d=(8.00+4.00i)
d+c1=(8.00+4.00i)

提示

只提交自己定义的函数部分,控制输出小数点后两位,用 setiosflags(ios::fixed);和setprecision(2);控制

迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……

#include <iostream>
#include <iomanip>
using namespace std;
class Complex
{
public:
Complex():real(0),imag(0) {}
Complex(double r,double i):real(r),imag(i) {}
Complex operator+(Complex &);
Complex operator+(double &);
friend Complex operator+(double&,Complex &);
friend ostream& operator << (ostream& output, const Complex& c);
private:
double real;
double imag;
};
Complex Complex::operator+(double &x)
{
Complex c;
c.real=x+real;
c.imag=imag;
return c;
}
Complex Complex::operator+(Complex &c1)
{
Complex c;
c.real=real+c1.real;
c.imag=imag+c1.imag;
return c;
}
ostream& operator << (ostream& output, const Complex& c)
{
output<<"("<<setiosflags(ios::fixed)<<setprecision(2)<<c.real;
output<<setiosflags(ios::fixed)<<setprecision(2);
if(c.imag<0)cout<<c.imag<<"i)"<<endl;
else cout<<"+"<<c.imag<<"i)"<<endl;
return output;
}
Complex operator+(double &x,Complex &c1)
{
return Complex(x+c1.real,c1.imag);
}
int main()
{
//测试复数加复数
double real,imag;
cin>>real>>imag;
Complex c1(real,imag);
cin>>real>>imag;
Complex c2(real,imag);
Complex c3=c1+c2;
cout<<"c1+c2=";
cout<<c3; //测试复数加实数
double d;
cin>>real>>imag;
cin>>d;
c3=Complex(real,imag)+d;
cout<<"c1+d=";
cout<<c3; //测试实数加复数
cin>>d;
cin>>real>>imag;
c1=Complex(real,imag);
c3=d+c1;
cout<<"d+c1=";
cout<<c3; return 0;
}

YTU 2535: C++复数运算符重载(+与<<)的更多相关文章

  1. YTU 2443: C++习题 复数类--重载运算符3+

    2443: C++习题 复数类--重载运算符3+ 时间限制: 1 Sec  内存限制: 128 MB 提交: 1368  解决: 733 题目描述 请编写程序,处理一个复数与一个double数相加的运 ...

  2. YTU 2441: C++习题 复数类--重载运算符2+

    2441: C++习题 复数类--重载运算符2+ 时间限制: 1 Sec  内存限制: 128 MB 提交: 847  解决: 618 题目描述 定义一个复数类Complex,重载运算符"+ ...

  3. YTU 2440: C++习题 复数类--重载运算符+,-,*,/

    2440: C++习题 复数类--重载运算符+,-,*,/ 时间限制: 1 Sec  内存限制: 128 MB 提交: 1189  解决: 774 题目描述 定义一个复数类Complex,重载运算符& ...

  4. YTU 2439: C++习题 复数类--重载运算符+

    2439: C++习题 复数类--重载运算符+ 时间限制: 1 Sec  内存限制: 128 MB 提交: 1022  解决: 669 题目描述 定义一个复数类Complex,重载运算符"+ ...

  5. sdut 4-1 复数类的运算符重载

    4-1 复数类的运算符重载 Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 通过本题目的练习能够掌握成员运算符重载及友元运算符重载 要求定义一个复数类.重 ...

  6. C++走向远洋——49(项目一2、复数类中的运算符重载、类的友元函数)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  7. C++走向远洋——48(项目一1、复数类中的运算符重载、类的成员函数)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  8. YTU 2617: B C++时间类的运算符重载

    2617: B C++时间类的运算符重载 时间限制: 1 Sec  内存限制: 128 MB 提交: 284  解决: 108 题目描述 C++时间类的运算符重载 定义一个时间类Time,其数据成员为 ...

  9. YTU 2640: 编程题:运算符重载---矩阵求和

    2640: 编程题:运算符重载---矩阵求和 时间限制: 1 Sec  内存限制: 128 MB 提交: 484  解决: 190 题目描述 /* 有两个矩阵a和b,均为2行3列.求两个矩阵之和. 重 ...

随机推荐

  1. php 日常问题

    1.isset.empty.is_null的区别 isset 判断变量是否定义或者是否为空 变量存在返回ture,否则返回false 变量定义不赋值返回false unset一个变量,返回false ...

  2. Linux命令学习(6):paste合并几列文件

    如果我们有三个文件: $ cat name.txt #姓名文档 Kevin Mary Tom $ cat gender.txt #性别文档 M F M $ cat age.txt #年龄文档 我们想把 ...

  3. Python:os模块 time模块

    1.os os.popen('cmd').read() 执行某个系统命令,:输出命令结果 os.getcwd()  获取当前操作目录 os.makedirs(r"C:\a\b\c" ...

  4. PHP编译参数configure配置详解(持续更新中)

    编译参数-使用 ./configure -h在源代码目录中,该命令可以查看所有编译参数以及对应的英文解释 编译参数-说明 --prefix=/opt/php //指定 php 安装目录--with-a ...

  5. ruby 第五次作业 part 1(分类、排序)

    movies_controller.rb class MoviesController < ApplicationController def movie_params params.requi ...

  6. json pickle shelve hashlib collections time

    import json # Json模块提供了四个功能:dumps.dump.loads.load dic = {'k1':'v1','k2':'v2','k3':'v3'} str_dic = js ...

  7. 【Codeforces 444A】DZY Loves Physics

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 两个点的子图他们的"密度"是比所有联通生成子图都要大的 "只要胆子大,遇到什么问题都不怕!" [代码] ...

  8. 2018/4/7 Mybatis源码结构概览

    在观看Mybatis源码的过程中,有一点疑惑,就是Mybatis的缓存设计明显有问题,首先,Mybatis缓存分为两级,先说一级,生命周期为一个sqlsession,只有在查询相同方法时才会命中缓存, ...

  9. Thinkphp5.0 视图view取值

    Thinkphp5.0 视图view取值 <!-- 获取控制器传递的变量 --> <li>{$age}</li> <!-- 获取服务器的信息 --> & ...

  10. [bzoj5343][Ctsc2018]混合果汁_二分答案_主席树

    混合果汁 bzoj-5343 Ctsc-2018 题目大意:给定$n$中果汁,第$i$种果汁的美味度为$d_i$,每升价格为$p_i$,每次最多添加$l_i$升.现在要求用这$n$中果汁调配出$m$杯 ...