YTU 2535: C++复数运算符重载(+与<<)
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++复数运算符重载(+与<<)的更多相关文章
- YTU 2443: C++习题 复数类--重载运算符3+
2443: C++习题 复数类--重载运算符3+ 时间限制: 1 Sec 内存限制: 128 MB 提交: 1368 解决: 733 题目描述 请编写程序,处理一个复数与一个double数相加的运 ...
- YTU 2441: C++习题 复数类--重载运算符2+
2441: C++习题 复数类--重载运算符2+ 时间限制: 1 Sec 内存限制: 128 MB 提交: 847 解决: 618 题目描述 定义一个复数类Complex,重载运算符"+ ...
- YTU 2440: C++习题 复数类--重载运算符+,-,*,/
2440: C++习题 复数类--重载运算符+,-,*,/ 时间限制: 1 Sec 内存限制: 128 MB 提交: 1189 解决: 774 题目描述 定义一个复数类Complex,重载运算符& ...
- YTU 2439: C++习题 复数类--重载运算符+
2439: C++习题 复数类--重载运算符+ 时间限制: 1 Sec 内存限制: 128 MB 提交: 1022 解决: 669 题目描述 定义一个复数类Complex,重载运算符"+ ...
- sdut 4-1 复数类的运算符重载
4-1 复数类的运算符重载 Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 通过本题目的练习能够掌握成员运算符重载及友元运算符重载 要求定义一个复数类.重 ...
- C++走向远洋——49(项目一2、复数类中的运算符重载、类的友元函数)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- C++走向远洋——48(项目一1、复数类中的运算符重载、类的成员函数)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- YTU 2617: B C++时间类的运算符重载
2617: B C++时间类的运算符重载 时间限制: 1 Sec 内存限制: 128 MB 提交: 284 解决: 108 题目描述 C++时间类的运算符重载 定义一个时间类Time,其数据成员为 ...
- YTU 2640: 编程题:运算符重载---矩阵求和
2640: 编程题:运算符重载---矩阵求和 时间限制: 1 Sec 内存限制: 128 MB 提交: 484 解决: 190 题目描述 /* 有两个矩阵a和b,均为2行3列.求两个矩阵之和. 重 ...
随机推荐
- 【Html,Css,JavaScript】初学总结
网页制作 HTML 一.通用模板: <!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF-8 ...
- 7-19 求链式线性表的倒数第K项(20 分)(单链表定义与尾插法)
给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理). 输出格式 ...
- MySQL prepare语句的SQL语法
MySQL prepare语法: PREPARE statement_name FROM preparable_SQL_statement; /*定义*/ EXECUTE statement_name ...
- codeforces 362B
#include<stdio.h> #include<stdlib.h> int cmp(const void *a,const void *b) { return *(int ...
- AOJ 0118 Property Distribution (DFS)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=46522 简单DFS,题目翻译参考 http://blog.csdn.net ...
- 1sting 大数 递推
You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ‘2’, or lea ...
- Subsets and Subsets II (回溯,DFS,组合问题)
Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...
- Java并发包——线程通信
Java并发包——线程通信 摘要:本文主要学习了Java并发包里有关线程通信的一些知识. 部分内容来自以下博客: https://www.cnblogs.com/skywang12345/p/3496 ...
- 【SSH 基础】浅谈Hibernate--入门篇
Hibernate是什么 Hibernate是一个轻量级的ORMapping框架 ORMapping原理(Object Relational Mapping)就是把对象里面的数据和数据库里面的数据,依 ...
- UVa 10950 - Bad Code
题目:有一种编码方式.串仅仅有小写字母构成,每一个小写字母相应一个数字,如今给你妆化后的数字串, 问有多少个原串与之相应,注意数字串里可能有一个前导0. 分析:搜索.按字母顺序存储映射表,按字母顺序匹 ...