Комплексное число представляется парой действительных чисел (a,b), где a - действительная часть, b - мнимая часть. Реализовать класс Complex для работы с комплексными числами. Реализовать конструктор, методы ввода с клавиатуры Read, вывода на экран Display.
Реализовать внешние функции, которые получают объекты класса в качестве аргументов:
Сложения add, (a,b) + (c,d) = (a+с, b+d),
Вычитания sub, (a,b) - (c,d) = (a-c,b-d),
Умножения mul, (a,b) x (c,d) = (ac-bd,ad+bc),
Деления div, (a,b) / (c,d) = (ac+bd,bc-ad) / (c^2+d^2),
Сравнения ecu, (a,b) = (c,d), если (a=c) и (b=d),
Сопряженное число conj, conj(a,b) = (a,-b).
C/C++
Лабораторная работа. Классы. Передача объекта в качестве аргумента.
#include <iostream>
class Complex {
public:
constexpr Complex(const double& real = 0, const double& imag = 0) : real_(real), imag_(imag) {}
Complex add(const Complex& c) {
return Complex(real_ + c.real_, imag_ + c.imag_);
}
Complex sub(const Complex& c) {
return Complex(real_ - c.real_, imag_ - c.imag_);
}
Complex mul(const Complex& c) {
return Complex(real_ * c.real_ - imag_ * c.imag_, real_* c.imag_ + c.real_ * imag_);
}
Complex div(const Complex& c) {
auto aa = real_ * real_;
auto bb = imag_ * imag_;
auto cc = c.real_ * c.real_;
auto dd = c.imag_ * c.imag_;
auto ac = real_ * c.real_;
auto bd = imag_ * c.imag_;
auto bc = imag_ * c.real_;
auto ad = real_ * c.imag_;
return Complex((ac + bd) / (cc + dd), (bc - ad) / (cc + dd));
}
bool equ(const Complex& c) {
return real_ == c.real_ && imag_ == c.imag_;
}
bool conj(const Complex& c) {
int a = imag_ < 0 ? -1 : 0;
int b = c.imag_ < 0 ? -1 : 0;
return equ(c) && a != b;
}
void read() {
std::cout << "a: ";
std::cin >> real_;
std::cout << "b: ";
std::cin >> imag_;
}
void display() {
std::cout << real_ << (imag_ < 0 ? " - " : " + ") << imag_ << 'i';
}
private:
double real_;
double imag_;
};
P.S. Внешние функции сами придумаете.
class Complex {
public:
constexpr Complex(const double& real = 0, const double& imag = 0) : real_(real), imag_(imag) {}
Complex add(const Complex& c) {
return Complex(real_ + c.real_, imag_ + c.imag_);
}
Complex sub(const Complex& c) {
return Complex(real_ - c.real_, imag_ - c.imag_);
}
Complex mul(const Complex& c) {
return Complex(real_ * c.real_ - imag_ * c.imag_, real_* c.imag_ + c.real_ * imag_);
}
Complex div(const Complex& c) {
auto aa = real_ * real_;
auto bb = imag_ * imag_;
auto cc = c.real_ * c.real_;
auto dd = c.imag_ * c.imag_;
auto ac = real_ * c.real_;
auto bd = imag_ * c.imag_;
auto bc = imag_ * c.real_;
auto ad = real_ * c.imag_;
return Complex((ac + bd) / (cc + dd), (bc - ad) / (cc + dd));
}
bool equ(const Complex& c) {
return real_ == c.real_ && imag_ == c.imag_;
}
bool conj(const Complex& c) {
int a = imag_ < 0 ? -1 : 0;
int b = c.imag_ < 0 ? -1 : 0;
return equ(c) && a != b;
}
void read() {
std::cout << "a: ";
std::cin >> real_;
std::cout << "b: ";
std::cin >> imag_;
}
void display() {
std::cout << real_ << (imag_ < 0 ? " - " : " + ") << imag_ << 'i';
}
private:
double real_;
double imag_;
};
P.S. Внешние функции сами придумаете.
Похожие вопросы
- Лабораторная работа c++
- Работа с классами и объектами
- Помогите пожалуйста с лабораторной работы по С++
- Как передать двухмерный массив в качестве аргумента через указатель.
- Лабораторная работа по алгоритмам (C++)
- Лабораторная работа на языке Си
- Классы, функции, объекты
- Доработка класса. Создание массива объектов
- Передача в метод класса указателя на функцию C++
- Программирование на С++(Классы-объекты)
доделал, но выдает ошибки ((
можете помочь?