50 lines
1.8 KiB
C++
50 lines
1.8 KiB
C++
#include <iostream>
|
|
|
|
class Complex {
|
|
private:
|
|
double real;
|
|
double imag;
|
|
|
|
public:
|
|
// Конструкторы
|
|
Complex(double r = 0.0, double im = 0.0) : real(r), imag(im) {}
|
|
|
|
// Метод для получения комплексного сопряжения (унарный плюс)
|
|
Complex operator+() const {
|
|
return Complex(real, -imag);
|
|
}
|
|
|
|
// Метод для умножения на действительное число
|
|
Complex operator*(double scalar) const {
|
|
return Complex(real * scalar, imag * scalar);
|
|
}
|
|
|
|
// Метод для умножения на комплексное число
|
|
Complex operator*(const Complex& other) const {
|
|
return Complex(real * other.real - imag * other.imag,
|
|
real * other.imag + imag * other.real);
|
|
}
|
|
|
|
// Метод для вывода комплексного числа
|
|
void display() const {
|
|
std::cout << "(" << real << " + " << imag << "i)" << std::endl;
|
|
}
|
|
|
|
// Дружественная функция для умножения действительного числа на комплексное число
|
|
friend Complex operator*(double scalar, const Complex& c);
|
|
};
|
|
|
|
// Реализация дружественной функции для умножения действительного числа на комплексное число
|
|
Complex operator*(double scalar, const Complex& c) {
|
|
return Complex(c.real * scalar, c.imag * scalar);
|
|
}
|
|
|
|
int main() {
|
|
// Пример использования операций
|
|
Complex a(2.0, 3.0);
|
|
Complex b = 2.5 * a; // Умножение действительного числа на комплексное число
|
|
b.display(); // Ожидаем (5 + 7.5i)
|
|
|
|
return 0;
|
|
}
|