clas_s.h Код | #include <iostream> #include <conio.h> #include <math.h> using namespace std; class Complex // класс компелексных чисел { public: 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() {} double abs() // Модуль комплексного числа { return sqrt(re * re - im * 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) { out << "(" << c.re << ") + I (" << c.im << "\n"; return out; } istream &operator>>(istream &in, Complex &c) { in >> c.re >> c.im; return in; }
|
main.cpp Код | #include "clas_s.h" #include <iostream> #include <conio.h> #include <math.h> using namespace std; class complexExt: public Complex { public: complexExt () {}; // Конструктор по умолчанию complexExt (double r): Complex(r) {} // Конструктор complexExt (double r, double i): Complex(r, i) {} // Конструктор complexExt (complexExt& c): Complex((Complex&)c) {} // Конструктор ~ complexExt () {} // Деструктор double abs() // Модуль комплексного числа { return sqrt(re * re - im * im); } complexExt operator+(complexExt &); // Перегрузка оператора сложения complexExt operator-(complexExt &); // Перегрузка оператора вычитания complexExt operator*(complexExt &); // Перегрузка оператора умножения complexExt operator/(complexExt &); // Перегрузка оператора деления // Перегрузка функции-оператора << для вывода класса complexExt friend ostream &operator<<(ostream &, complexExt &); // Перегрузка функции-оператора >> для ввода класса complexExt friend istream &operator>>(istream &, complexExt &); }; // Перегрузка + complexExt complexExt::operator+( complexExt &fp1) { fp1.re = re + fp1.re; fp1.im = im + fp1.im; return fp1; } // Перегрузка - complexExt complexExt::operator-( complexExt &fp1) { fp1.re = re - fp1.re; fp1.im = im - fp1.im; return fp1; } // Перегрузка * complexExt complexExt::operator*( complexExt &fp1) { double i, j; i = re * fp1.re - im * fp1.im; j = re* fp1.im + fp1.re * im; fp1.re = i; fp1.im = j; return fp1; } // Перегрузка / complexExt complexExt::operator/( complexExt &fp1) { double k, i, j; k = fp1.re * fp1.re + fp1.im * fp1.im; i = (re * fp1.re + im * fp1.im) / k; j = (fp1.re * im- re * fp1.im) / k; fp1.re = i; fp1.im = j; return fp1; }
// Перегрузка оператора <<
ostream &operator<< (ostream &fo, complexExt &fp) { if (fp.im < 0) fo << "mod(cos" <<fp.re << " + sin" << fp.im << "i)" << endl; else fo << "mod(cos" <<fp.re << " + sin" << fp.im << "i)" << endl; return fo; }
// Перегрузка оператора >> istream &operator>>(istream &fi, complexExt &fp) { cout << "Vvedite deistvitelnyu chast: "; fi >> fp.re; cout << "Vvedite mnimyu chast: "; fi >> fp.im; return fi; } int main() { // Комплексные числа complexExt c1, c2, c3, c4, c5; // Ввод комплексных чисел cin >> c1; cin >> c2; cin >> c3; cin >> c4; cin >> c5; // Вывод комплексных чисел cout << "\nc1 = " << c1; cout << "c2 = " << c2; cout << "c3 = " << c3; cout << "c4 = " << c4; cout << "c5 = " << c5 << '\n'; cout << "Modul c1: " << c1.abs() << "\n\n"; // Вывод результатов операций cout << "c1 + c2 = " << (c1 + c2); cout << "c1 - c3 = " << (c1 - c3); cout << "c1 * c4 = " << (c1 * c4); cout << "c1 / c5 = " << (c1 / c5); getch(); return 0; }
|
что мне нужно сделать, чтобы результат программы был такой Введите действительную часть: 9 Введите мнимую часть: 8 Введите действительную часть: 7 Введите мнимую часть: 6 Введите действительную часть: 5 Введите мнимую часть: 4 Введите действительную часть: 3 Введите мнимую часть: 2 Введите действительную часть: 1 Введите мнимую часть: 2 c1 = mod(cos(9)+i*sin(8) c2 = mod(cos(7)+i*sin(6) c3 = mod(cos(5)+i*sin(4) c4 = mod(cos(3)+i*sin(2) c5 = mod(cos(1)+i*sin(2) Модуль c1: 4.123106 c1 + c2 = 16+i14 c1 - c3 = 4+i4 c1 * c4 = 11+i42 c1 / c5 = 5+i(-2) а не такой? Введите действительную часть: 9 Введите мнимую часть: 8 Введите действительную часть: 7 Введите мнимую часть: 6 Введите действительную часть: 5 Введите мнимую часть: 4 Введите действительную часть: 3 Введите мнимую часть: 2 Введите действительную часть: 1 Введите мнимую часть: 2 c1 = mod(cos(9)+i*sin(8) c2 = mod(cos(7)+i*sin(6) c3 = mod(cos(5)+i*sin(4) c4 = mod(cos(3)+i*sin(2) c5 = mod(cos(1)+i*sin(2) Модуль c1: 4.123106 c1 + с2 = mod(cos(9)+i*sin(8) c1 - с3 = mod(cos(7)+i*sin(6) c1 * c4 = mod(cos(5)+i*sin(4) c1 / c5 = mod(cos(3)+i*sin(2)
|