module;
#include <print>

export module Complex;

// Klassendefinition
export class Complex
{
   // Geschuetzte Eigenschaften
   double real = 0.0; // Real-Anteil
   double imag = 0.0; // Imaginär-Anteil
 public:
   // Memberfunktionen
   void Init(decltype(real) r, decltype(imag) i);
   void AddComplex(const Complex& op);
   void SubComplex(const Complex& op);
   void PrintComplex() const;
};

// Definition der Memberfunktionen
// Komplexe Zahl initialisieren
void Complex::Init(decltype(real) r, decltype(imag) i)
{
   real = r;
   imag = i;
}
// 2 komplexe Zahlen addieren
void Complex::AddComplex(const Complex& op)
{
   real += op.real;
   imag += op.imag;
}
// 2 komplexe Zahlen subtrahieren
void Complex::SubComplex(const Complex& op)
{
   real -= op.real;
   imag -= op.imag;
}
// Komplexe Zahl ausgeben
void Complex::PrintComplex() const
{
	std::println("(R:{:.2f} / I:{:.2f})\n", real, imag);
}
