complex / Пошук по тегам / OOP - Портал об’єктно-орієнтованого програмування Подорожуй з gofrie.com

Задача: Комплексні числа (алгебраїчна і тригометрична форми)

Реалізувати два варіанти класу комплексних чисел за доданими специфікаціями:
УВАГА! Період тригонометричних чисел має округлюватися до 2*PI

#include <iostream>
#include <cmath>
using namespace std;

const double PI = 3.141592653589793238462643383279;

class AComplex;
class TComplex
{
private:
	double _ro, _phi;
	// Зведення по модулю 2PI
	void normalizePhi();

public:
	TComplex (const double& ro=0, const double& phi=0);
	TComplex (const TComplex&);
	TComplex (const AComplex&);
	~TComplex();

	TComplex& operator= (const TComplex&);

	double& mod();
	double& arg();

	const double& mod() const;
	const double& arg() const;

	const double re() const;
	const double im() const;
};

TComplex& operator+=(TComplex&, const TComplex&);
TComplex& operator-=(TComplex&, const TComplex&);
TComplex& operator*=(TComplex&, const TComplex&);
TComplex& operator/=(TComplex&, const TComplex&);

const TComplex operator* (const TComplex&, const TComplex&);
const TComplex operator/ (const TComplex&, const TComplex&);

class TComplex;
class AComplex
{
private:
	double _re, _im;

public:
	AComplex (const double& re=0, const double& im=0);
	AComplex (const TComplex&);
	AComplex (const AComplex&);
	~AComplex();

	AComplex& operator= (const AComplex&);

	double& re();
	double& im();

	const double& re(void) const;
	const double& im(void) const;

	const double mod() const;
	const double arg() const;

	// Спряжене до комплексного числа
	const AComplex conj() const;
};

AComplex& operator+=(AComplex&, const AComplex&);
AComplex& operator-=(AComplex&, const AComplex&);
AComplex& operator*=(AComplex&, const AComplex&);
AComplex& operator/=(AComplex&, const AComplex&);

const bool operator==(const AComplex &, const AComplex &);
const bool operator!=(const AComplex &, const AComplex &);

const AComplex operator+ (const AComplex&, const AComplex&);
const AComplex operator- (const AComplex&, const AComplex&);