Преподаватель сказала, что в программе неправильно вычисляются значения выражений. Помогите, пожалуйста, исправить)
complex.h
| Код | #include <iostream> #include <conio.h> #include <math.h> using namespace std;
class Complex // класс компелексных чисел { double re, im; // целая и мнимая части // создаем конструкторы public: Complex() {}; Complex (double r) // конструктор по умолчанию { re = r; im = 0; } Complex (double r, double i) // конструктор по умолчанию { re = r; im = i; } Complex (Complex &c) // конструктор копирования { re = c.re; im = c.im; } ~Complex() {} float abs() // Модуль комплексного числа { return sqrt(re * re - im * im); }
void print(Complex &c) { if(c.im>0) printf("%f + %f i\n",c.re,c.im); else printf("%f %f i\n",c.re,c.im);
}
Complex & operator = (Complex &c) // перегрузка оператора присваивания { re = c.re; im = c.im;
return (*this); }
Complex Complex::operator + (Complex &c) // перегрузка оператора сложения { Complex temp;
temp.re = re + c.re; temp.im = im + c.re;
return temp; }
Complex Complex::operator - (Complex &c) // перегрузка оператора вычитания { Complex temp;
temp.re = re - c.re; temp.im = im - c.re; return temp; }
Complex Complex::operator * (Complex &c) // перегрузка оператора умножения { Complex temp;
temp.re = re*c.re; temp.im = re*c.im;
return temp; }
Complex Complex::operator / (Complex &c) // перегрузка оператора деления { Complex temp;
double r = c.re * c.re + c.im * c.im; temp.re = (re * c.re + im * c.im) / r; temp.re = (im * c.re - re * c.im) / r;
return temp; }
friend ostream &operator<<(ostream &, Complex &); // перегрузка оператора << friend istream &operator>>(istream &, Complex &); // перегрузка оператора >>
};
ostream &operator<<(ostream &out, Complex &c) { if (c.im>0) out << "" << c.re << " + "<<c.im<<" i" <<"\n"; else out << "" << c.re << " "<<c.im<<" i" <<"\n"; return out; }
istream &operator>>(istream &in, Complex &c) { in >> c.re >> c.im; return in; }
|
cpp
| Код | #include "complex.h" #include "iostream" using namespace std;
int main() { Complex u(5,2); Complex v(3,-3);
Complex x1(5); Complex x2(2.3); Complex x3(3); Complex x4(1); Complex x5(1.5); cout << u << " " << v << endl;
// вывод числа двумя функциями u.print(u); cout<<u<<endl;
cout << u + v << endl; cout << u - v << endl; cout << u * v << endl; cout << u/v << endl;
cout << x1*u+x2*v << endl; //5u + 2.3v cout << (x3+u*v)/(u+v) << endl; //(3+uv)/(u+v)
cout << x4/(u+x5*v) << endl; //(u+1.5v)-1 u = v; cout << u << " = " << v << endl; int i; cin>>i;
return 0; }
|
|