/*
实验内容:定义Complex类中的<<和>>运算符的重载,实现输入和输出。
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 定义Complex类中的<<和>>运算符的重载,实现输入和输出
* 作 者: 付文杰
* 完成日期: 2012 年 4 月 16日
* 版 本号: x1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 程序头部的注释结束(此处也删除了斜杠)
*/
//【任务1】接第8周任务1,定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
#include <iostream> using namespace std; class Complex { public: Complex(){real = 0; imag = 0;} Complex(double r){real = r;imag = 0;}//类型转换函数 Complex(double r,double i){real = r; imag = i;} friend ostream& operator << (ostream &,Complex &); friend istream& operator >> (istream &,Complex &); friend Complex operator+ (Complex c1,Complex c2); friend Complex operator- (Complex c1, Complex c2); friend Complex operator- (Complex &c); friend Complex operator* (Complex c1, Complex c2); friend Complex operator/ (Complex c1, Complex c2); private: double real; double imag; }; //下面定义成员函数 ostream& operator << (ostream &ouput,Complex &c) { ouput << "(" << c.real; if(c.imag >= 0)ouput << "+"; ouput << c.imag << "i)" << endl; return ouput; } istream& operator >> (istream &input, Complex &c) { char c1; cout << "input real part and imaginary part of complex number:"; input >> c.real >> c.imag >> c1; return input; } Complex operator + (Complex c1, Complex c2) {return Complex(c1.real + c2.real, c1.imag + c2.imag);} Complex operator - (Complex c1, Complex c2) {return Complex(c1.real - c2.real, c1.imag - c2.imag);} Complex operator - (Complex &c) { return Complex(-c.real, -c.imag);} Complex operator * (Complex c1, Complex c2) {return Complex(c1.real * c2.real - c1.imag * c2.imag, c1.imag * c2.real + c1.real * c2.imag);} Complex operator / (Complex c1, Complex c2) {return Complex((c1.real * c2.real + c1.imag * c2.imag) / (c2.real * c2.real + c2.imag * c2.imag), (c1.imag * c2.real - c1.real * c2.imag) / (c2.real * c2.real + c2.imag * c2.imag));} int main() { double d = 2.5; Complex c1, c2, c3,c4; cin >> c1; cout << "请再输入一个复数:" << endl; cin >> c2; cout << "c1 = " << c1; cout << "c2 = " << c2; c3 = c1 + c2; cout << "c1 + c2 = " << c3; c3 = c1 + d; cout << "c1 + " << d << "= " << c3; c3 = Complex(d) + c1; cout << d << " + c1" << "= " << c3; c3 = c1 - c2; cout << "c1 - c2 = " << c3; c3 = c1 - d; cout << "c1 - " << d << "= " << c3; c3 = d - c1; cout << d << " - c1" << "= " << c3; c3 = c1 * c2; cout << "c1 * c2 = " << c3; c3 = c1 * d; cout << "c1 * " << d << "= " << c3; c3 = d * c1; cout << d << " * c1" << "= " << c3; c3 = c1 / c2; cout << "c1 / c2 = " << c3; c3 = c1 / d; cout << "c1 / " << d << "= " << c3; c3 = d / c1; cout << d << " / c1" << "= " << c3; c3 = - c1; cout << " -c1= " << c3; system("pause"); return 0; }
运行结果: