Лабораторная работа. Комплексные числа. Классы. Передача объекта в качестве аргумента

Комплексное число представляется парой действительных чисел (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).

Так и в чем вопрос? Что пробовали делать? Что получилось?

1 лайк

вообще не получилось,хотелось бы увидеть полный код если кому не сложно

я просто сам пока новичок,я пока по готовому коду учусь,разбираюсь

Так тот, кто задачу дал, видимо ожидает, что студенты должны суметь уже не только с готовым разобраться ) Иначе б дал и готовое.

Но нагуглить примеры не сложно: https://www.google.com/search?q=c%2B%2B+complex+number+implementation

А попытки были?))

Если да, то надо пытаться формулировать конкретные вопросы про то, что непонятно.
Ну а хороший вопрос — это уже почти ответ. :rubberduck2:

Изучение программирования, как учиться, искать работу, и прочие полезные материалы

1 лайк

Помоги пожалуйста доделать внешние функции и исправить ошибки.

#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_;
};

Куда отступы в коде делись?)

Даже если код был найден в таком виде, надо переформатировать средствами своего редактора кода (Ctrl+A, Ctrl+K, Ctrl+F в Visual Studio) или любым онлайн сервисом, например, http://format.krzaq.cc

Какие?