complex.h
#ifndef COMPLEX_H
#define COMPLEX_H
#include <iostream>
using namespace std;
class Complex {
private:
double re,im;
public:
Complex(){re=0;im=0;}
Complex(double, double);
~Complex(){};
Complex(const Complex&);
friend istream& operator>>(istream &fi, Complex &x);
friend ostream& operator<<(ostream &fo, const Complex &x);
Complex& operator +(Complex&);
Complex& operator -(Complex&);
Complex& operator *(Complex&);
Complex& operator /(Complex&);
Complex& operator +(double);
Complex& operator -(double);
Complex& operator *(double);
Complex& operator /(double);
Complex& operator- (){
re=-re;
im=-im;
return *this;
}
Complex& operator! (){
im=-im;
return *this;
}
};
#endif
complex.cpp
#include"complex.h"
Complex::Complex(double r, double i) {re=r; im=i;}
Complex::Complex(const Complex & x){
this->re = x.re;
this->im = x.im;
}
istream &operator>>(istream &fi, Complex &x) {
char c;
fi>>x.re>>c;
if (c=='-') {fi>>c>>x.im; x.im=-x.im;}
else fi>>c>>x.im;
return fi;
}
ostream &operator<<(ostream &fo, const Complex &x) {
fo<<x.re;
if (x.im<0) fo<<"-i"<<(-x.im); else fo<<"+i"<<x.im; return fo;
}
Complex& Complex::operator +(Complex &x){this->re=this->re+ x.re; this->im=x.im+this->im; return *this;}
Complex& Complex::operator -(Complex &x){this->re=this->re- x.re; this->im=this->im -x.im; return *this;}
Complex& Complex::operator *(Complex &x){this->re=this->re*x.re-this->im*x.im; this->im=this->re*x.im+this->im*x.re; return *this;}
Complex& Complex::operator /(Complex &x){if ((x.re==0) && (x.im==0)) {this->im=0; this->re=0; goto lab;}
this->re=(this->re*x.re+this->im*x.im)/(x.re*x.re + x.im*x.im);
this->im=(this->im*x.re-this->re*x.im)/(x.re*x.re + x.im*x.im);
lab: return *this;
}
Complex& Complex::operator +(double x){re=re+x ; return *this;}
Complex& Complex::operator -(double x){re-=x; return *this;}
Complex& Complex::operator *(double x){re*=x; im*=x; return *this;}
Complex& Complex::operator /(double x){re/=x; im/=x; return *this;}
main.cpp
#include <iostream>
#include "complex.h"
int main() {
setlocale(0, "rus");
Complex x[3],rez;
cout<<"Введите последовательно три комплексных числа\nв формате A+iB, либо A-iB,\n";
cout<<"где A и B - действительные числа\n";
for (int i=0; i<3; i++) cin>>x[i];
cout<<"\n******************************************************\n";
cout<<"Результат выражения\n(!("<<x[0]<<"*"<<x[2]<<"*<<"x[1]<<")/";
cout<<x[1]<<"+"<<x[1]<<"-"<<x[2]<<"+"<<x[0]<<"/(!"<<x[1]<<"))/(-"<<x[1]<<"-"<<x[2]<<")/"<<x[0]<<"\n";
rez = !(x[0]*x[2]*x[1]);
rez= (rez/x[1]+x[1]-x[2]+x[0]/(!x[1]));
rez= rez/(-x[1]-x[2])/x[0];
cout<<"равен: "<<rez;
return 0;
}