完成复数类
来源:互联网 发布:鼠标自动点击软件 mac 编辑:程序博客网 时间:2024/06/07 10:48
完成复数类的加、乘等简单运算。首先会初始化一个复数,然后需要你重新输入一个复数,然后进行简单的运算,最后两个复数进行比较。其中用到重载运算符,this指针,构造函数等知识。
#define _CRT_SECURE_NO_WARNINGS 1#ifndef COMPLEX_H#define COMPLEX_H#include <iostream>#include <iomanip>class Complex{public: Complex(double _real,double _imag = 0.0):real(_real),imag(_imag){} //构造函数,初始化列表和默认参数 Complex(std::istream &is){is >> *this;}; //输入构造函数,调用自身的>>操作符 void SetReal(double _real); //更改实部的值 void SetImag(double _imag); //更改虚部的值 void SetVal(double _real,double _imag); //更改整个复数 inline double GetReal() const; //获取实部,常成员函数 inline double GetImag() const; //获取虚部,常成员函数 Complex& operator+=(const Complex &val); //成员操作符+= Complex& operator*=(const Complex &val); //成员操作符-= friend bool operator==(const Complex &lhs,const Complex &rhs); //友元函数,需访问私有数据 friend std::istream& operator>>(std::istream &,Complex &); //友元输入操作符,需私有数据 friend std::ostream& operator<<(std::ostream &,const Complex &); //友元输出操作符,需私有数据private: double real; double imag;};Complex operator+(const Complex &lhs, const Complex &rhs); //普通函数,实现两个复数+操作Complex operator*(const Complex &lhs, const Complex &rhs); //普通函数,实现两个复数*操作///////////////////////////////////////////////////////////////////////////////////////////////////////inline bool operator==(const Complex &lhs,const Complex &rhs){ return (lhs.real == rhs.real) && (lhs.imag == rhs.imag);}inline bool operator!=(const Complex &lhs,const Complex &rhs){ return !(lhs==rhs);}inline Complex& Complex::operator+=(const Complex &val){ real += val.real; imag += val.imag; return *this;}inline Complex operator+(const Complex &lhs,const Complex &rhs){ Complex ret(lhs); ret += rhs; return ret;}inline Complex& Complex::operator*=(const Complex &val){ double tReal = real; double tImag = imag; real = tReal*val.real - tImag*val.imag; imag = tReal*val.imag + tImag*val.real; return *this;}inline Complex operator*(const Complex &lhs,const Complex &rhs){ Complex ret(lhs); ret *= rhs; return ret;}inline std::istream& operator>>(std::istream &is,Complex &com){ std::cout << "请输入实数部分:" ; is >> com.real; if(is) { std::cout << "请输入虚数部分:" ; is >> com.imag; if(is) { return is; } else { com = Complex(0.0); } } else { com = Complex(0.0); } return is;}inline std::ostream& operator<<(std::ostream &os, const Complex &com){ os << "复数为:" << com.real << std::showpos << com.imag << "i" << std::endl; return os;}inline double Complex::GetReal() const { return real;}inline double Complex::GetImag() const{ return imag;}void Complex::SetReal(double _real){ real = _real;}void Complex::SetImag(double _imag){ imag = _imag;}void Complex::SetVal(double _real,double _imag){ real = _real; imag = _imag;}#endif
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <tchar.h>#include <cstdlib>#include <iostream>#include <sys/timeb.h>#include <ctime>#include <climits>#include "Complex.h"using namespace std;int main(int argc, _TCHAR* argv[]){ //测试构造函数 Complex c1(3,4); cout << c1; //测试流输入构造函数 Complex c2(cin); cout << c2; //测试+ Complex c3 = c1 + c2; cout << c3; //测试* Complex c4 = c1*c2; cout << c4; //测试*= Complex c5(3,4); c5 *= c1; cout << c5; //测试== if(c1==c2) { cout << "复数c1和c2相等" << endl; } else { cout << "复数c1和c2不等" << endl; } system("pause"); return 0;}
阅读全文
0 0
- 完成复数类
- C++复数类的完成
- C++完成复数类的运算符重载
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- 复数类
- x264-settings
- 记录用户的商品浏览记录(Linkedlist,删除cookie)
- Shell逐行处理文件的最后一行
- C语言选择排序详解及其实现笔记
- sqlserver和mysql中与oracle的nvl函数功能相同的函数
- 完成复数类
- HDU 1114 Piggy-Bank 完全背包
- 程序员用css3实现网页电子时钟,校准北京时间
- 文档总结16-linux中磁盘管理,LVM与SELINUX
- 画流程图和UML类图
- 关于强连通分量再瞎扯一点
- caffe编译时json_parser_read.hpp报错
- c#提取Excel表格单个字段的方法
- 笔记12