Zrobiłem kalkulator liczb zespolonych. Mam pytanie co do dzielenia. Jak powinienem zmodyfikować funkcje żeby zamiast tej zabawy w main wywołać tylko funkcję podziel i mieć gotowy wynik?
Przez zabawe mam na myśli to, że najpierw wywołuję funkcjęsprzerzenie
a potem mnożę osobno licznik i mianownik a na końcu dzielę.
#include <iostream>
#include "kalkulator.h"
using namespace std;
int main()
{
Zespol l1(3,1);
Zespol l2(1,-2);
Zespol tmp;
//ponizsze operacje wykonuje żeby podzielić l1 przez l2
tmp.sprzezenie(l2);
Zespol tmp_2;
Zespol tmp_2_2;
tmp_2.pomnoz(l1,tmp);
tmp_2_2.pomnoz(l2,tmp);
Zespol tmp_3;
tmp_3.podziel(tmp_2,tmp_2_2);
cout<<"Podziel "<<tmp_3.rz<<" "<<tmp_3.ur<<"i";
return 0;
}
class Zespol
{
public:
double rz;
double ur;
Zespol();
Zespol(double x, double y);
void dodaj(Zespol x1, Zespol x2);
void pomnoz(Zespol x1, Zespol x2);
void odejmij(Zespol x1, Zespol x2);
void podziel(Zespol x1, Zespol x2);
void sprzezenie(Zespol x1);
};
Zespol::Zespol(double x, double y)
{
rz=x;
ur=y;
}
Zespol::Zespol()
{
rz = 0;
ur = 0;
}
void Zespol::dodaj(Zespol z1, Zespol z2)
{
rz = z1.rz + z2.rz;
ur = z1.ur + z2.ur;
}
void Zespol::pomnoz(Zespol z1, Zespol z2)
{
rz = (z1.rz * z2.rz)-(z1.ur*z2.ur);
ur = (z1.rz * z2.ur)+(z1.ur*z2.rz);
}
void Zespol::odejmij(Zespol z1, Zespol z2)
{
rz = z1.rz - z2.rz;
ur = z1.ur - z2.ur;
}
void Zespol::podziel(Zespol z1, Zespol z2)
{
rz = (z1.rz)/(z2.rz);
ur = (z1.ur)/(z2.rz);
}
void Zespol::sprzezenie(Zespol x1)
{
rz = x1.rz;
ur = -x1.ur;
}