02.07.2010, 22:10 | #1 (permalink) |
Новичок
Регистрация: 02.07.2010
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Перегрузка операторов комплексных чисел в С++
Для класса "комплексное число" с данными double Re; double Im; выполнить перегрузку операций ввода, вывода, сложения (+ и +=), сложения с действительными числами и сравнения. |
02.07.2010, 22:10 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Вот список аналогичных топиков Помогите с программой на C++ при помощи операторов while, do while, for Cоздать файл целых чисел Программа перемножения длинных чисел на С++ |
26.07.2010, 17:26 | #2 (permalink) |
Member
Регистрация: 26.07.2010
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 60
|
Если не ошибаюсь, то в C++ уже есть библиотека для работы с комплексными:
Header: <complex> Namespace: std Правда, там нет перегрузки I/O. Но она есть вот здесь: _http://dmtsoft.ru/bn/370/as/oneaticleshablon/ |
26.07.2010, 17:41 | #3 (permalink) |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
Я жду великое математическое открытие - сравнение двух комплексных чисел!
Или речь идет о проверке на равенство? Последний раз редактировалось Long Cat; 26.07.2010 в 17:47 |
26.07.2010, 18:33 | #4 (permalink) |
Member
Регистрация: 26.07.2010
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 60
|
С перегруженными == и !=:
Код:
/* Использованы материалы с _http://dmtsoft.ru/bn/370/as/oneaticleshablon/ */ #include <iostream> #include <cmath> using namespace std; class Complex { private: double real; // Действительная часть double image; // Мнимая часть public: Complex() {}; // Конструктор по умолчанию Complex(double r) { real = r; image = 0; } // Конструктор Complex(double r, double i) { real = r, image = i; } // Конструктор ~Complex() {} // Деструктор double abs() // Модуль комплексного числа { return sqrt(pow(real, 2.0) - pow(image, 2.0)); } Complex operator+(Complex &); // Перегрузка оператора сложения Complex operator-(Complex &); // Перегрузка оператора вычитания Complex operator*(Complex &); // Перегрузка оператора умножения Complex operator/(Complex &); // Перегрузка оператора деления bool operator == (Complex & val) { if ((this->real == val.real) && (this->image == val.image)) { return true; } else { return false; } } bool operator != (Complex & val) { if ((this->real == val.real) && (this->image == val.image)) { return false; } else { return true; } } // Перегрузка функции-оператора << для вывода класса Complex friend ostream &operator<<(ostream &, Complex &); // Перегрузка функции-оператора >> для ввода класса Complex friend istream &operator>>(istream &, Complex &); }; // Перегрузка + Complex Complex::operator+(Complex &fp1) { fp1.real = real + fp1.real; fp1.image = image + fp1.image; return fp1; } // Перегрузка - Complex Complex::operator-(Complex &fp1) { fp1.real = real - fp1.real; fp1.image = image - fp1.image; return fp1; } // Перегрузка * Complex Complex::operator*(Complex &fp1) { double i, j; i = real * fp1.real - image * fp1.image; j = real * fp1.image + fp1.real * image; fp1.real = i; fp1.image = j; return fp1; } // Перегрузка / Complex Complex::operator/(Complex &fp1) { double k, i, j; k = fp1.real * fp1.real + fp1.image * fp1.image; i = (real * fp1.real + image * fp1.image) / k; j = (fp1.real * image - real * fp1.image) / k; fp1.real = i; fp1.image = j; return fp1; } // Перегрузка оператора << ostream &operator<< (ostream &fo, Complex &fp) { if (fp.image < 0) fo << fp.real << "+i(" << fp.image << ")\n"; else fo << fp.real << "+i" << fp.image << "\n"; return fo; } // Перегрузка оператора >> istream &operator>>(istream &fi, Complex &fp) { cout << "Введите действительную часть: "; fi >> fp.real; cout << "Введите мнимую часть: "; fi >> fp.image; return fi; } int main() { // Комплексные числа Complex c1, c2; // Ввод комплексных чисел cin >> c1; cin >> c2; // Вывод комплексных чисел cout << "\nc1 = " << c1; cout << "c2 = " << c2; if (c1 == c2) { cout << "c1 = c2\r\n"; } if (c1 != c2) { cout << "c1 != c2\r\n"; } cout << "Модуль c1: " << c1.abs() << "\n\n"; // Вывод результатов операций cout << "c1 + c2 = " << (c1 + c2); cout << "c1 - c2 = " << (c1 - c2); cout << "c1 * c2 = " << (c1 * c2); cout << "c1 / c2 = " << (c1 / c2); return 0; } |
26.07.2010, 18:34 | #5 (permalink) |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
26.07.2010, 18:37 | #6 (permalink) | |
TEHNARI.RU
Регистрация: 31.03.2008
Адрес: Израиль
Сообщений: 18,407
Записей в дневнике: 7
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Репутация: 14157
|
ОФФ ТОП..
Long Cat - Цитата:
artes33 - очень многие, постоянно или очень часто тут сидят |
|
26.07.2010, 18:44 | #7 (permalink) |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
Из-за того, что на форуме отключена технология RSS, а e-mail с уведомлениями накрылся, приходится изобретать, чтобы быть в курсе событий.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|