简单的运算符重载---复数加减乘除

    xiaoxiao2021-12-14  19

    //complex.h #pragma once #include <stdio.h> class Complex { public: Complex() { real = 0; imag = 0; } Complex(double real, double imag) { this->real = real; this->imag = imag; } Complex operator +(const Complex &c); Complex operator -(const Complex &c); Complex operator *(const Complex &c); Complex operator /(const Complex &c); friend void print(const Complex &c); private: double real; double imag; }; class complex { public: complex() { real=imag=0; } complex(double r, double i) { real = r, imag = i; } friend complex operator +(const complex &c1, const complex &c2); friend complex operator -(const complex &c1, const complex &c2); friend complex operator *(const complex &c1, const complex &c2); friend complex operator /(const complex &c1, const complex &c2); friend void display(const complex &c); private: double real, imag; }; class CharArray { public: CharArray(int l) { if (l < 1) { Buff = NULL; } else { Length = l; Buff = new char[Length]; } } int GetLength() { return Length; } char & operator [](int i); ~CharArray() { if (Buff != NULL) { delete Buff; } } private: int Length; char * Buff; }; //complex.cpp #include "complex.h" #include <iostream> using namespace std; inline Complex Complex::operator+(const Complex &c) { //cout<<"class +"<<endl; return Complex(this->real + c.real, this->imag + c.imag); } inline Complex Complex::operator-(const Complex &c) { return Complex(this->real - c.real, this->imag - c.imag); } inline Complex Complex::operator*(const Complex &c) { return Complex(real * c.real - imag * c.imag, real * c.imag + imag * c.real); } inline Complex Complex::operator /(const Complex &c) { return Complex((real * c.real + imag * c.imag) / (c.real * c.real + c.imag * c.imag),(imag * c.real - real * c.imag) / (c.real * c.real + c.imag * c.imag)); } extern void print(const Complex &c) { if(c.imag < 0) { cout<<c.real<<c.imag<<'i'; } else { cout<<c.real<<'+'<<c.imag<<'i'; } } extern void ComplexTest() { Complex c1(2.0, 3.0), c2(4.0, -2.0), c3; cout<<"c1 = "; print(c1); cout<<endl; cout<<"c2 = "; print(c2); c3 = c1 + c2; cout<<endl<<"c1 + c2 = "; print(c3); c3 = c1 - c2; cout<<endl<<"c1 - c2 = "; print(c3); c3 = c1 * c2; cout<<endl<<"c1 * c2 = "; print(c3); c3 = c1 / c2; cout<<endl<<"c1 / c2 = "; print(c3); c3 = (c1+c2) * (c1-c2) * c2/c1; cout<<endl<<"(c1+c2)*(c1-c2)*c2/c1="; print(c3); cout<<endl; } complex operator +(const complex &c1, const complex &c2) { //cout<<"friend +"<<endl; return complex(c1.real + c2.real, c1.imag + c2.imag); } complex operator -(const complex &c1, const complex &c2) { return complex(c1.real - c2.real, c1.imag - c2.imag); } complex operator *(const complex &c1, const complex &c2) { return complex(c1.real * c2.real - c1.imag * c2.imag, c1.real * c2.imag + c1.imag * c2.real); } complex operator /(const complex &c1, const 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)); //return Complex((real * c.real + imag + c.imag) / (c.real * c.real + c.imag * c.imag),(imag * c.real - real * c.imag) / (c.real * c.real + c.imag * c.imag)); } void display(const complex &c) { if(c.imag < 0) { cout<<c.real<<c.imag<<'i'; } else { cout<<c.real<<'+'<<c.imag<<'i'; } } extern void complexTest() { complex c1(2.0, 3.0), c2(4.0, -2.0), c3; cout<<"c1 = "; display(c1); cout<<endl; cout<<"c2 = "; display(c2); c3 = c1 + c2; cout<<endl<<"c1 + c2 = "; display(c3); c3 = c1 - c2; cout<<endl<<"c1 - c2 = "; display(c3); c3 = c1 * c2; cout<<endl<<"c1 * c2 = "; display(c3); c3 = c1 / c2; cout<<endl<<"c1 / c2 = "; display(c3); c3 = (c1+c2) * (c1-c2) * c2/c1; cout<<endl<<"(c1+c2)*(c1-c2)*c2/c1="; display(c3); cout<<endl; } char & CharArray::operator[](int i) { static char ch = '\0'; if(i < Length && i >= 0) { return Buff[i]; } else { cout<<"Index out of range."<<endl; return ch; } } void CharArrayTest() { int cnt; CharArray string1(6); char * string2 = "string"; for(cnt=0; cnt < 8; cnt++) string1[cnt] = string2[cnt]; cout<<endl; for(cnt=0; cnt < 8; cnt++) cout<<string1[cnt]<<endl; cout<<endl; cout<<string1.GetLength()<<endl; }
    转载请注明原文地址: https://ju.6miu.com/read-964254.html

    最新回复(0)