Oto kod wynikowy.
Nie twierdzę że jest idealny, po prostu działa.
struct Zespolona
{
double re {0.0};
double im {0.0};
};
class Obliczenia
{
public:
Zespolona suma(const Zespolona& a, const Zespolona& b)
{
return { a.re + b.re, a.im + b.im };
}
Zespolona roznica( const Zespolona& a, const Zespolona& b)
{
return { a.re - b.re, a.im - b.im };
}
Zespolona iloczyn( const Zespolona& a, const Zespolona& b )
{
return { a.re * b.re - a.im * b.im, a.re * b.im + a.im * b.re};
}
Zespolona iloraz( const Zespolona& a, const Zespolona& b )
{
auto b2 = b.re * b.re + b.im * b.im;
return { (a.re * b.re + a.im * b.im)/b2, (-a.re * b.im + a.im * b.re)/b2};
}
};
void Zad2Frame::OnButton1Click(wxCommandEvent& event)
{
Obliczenia oblicz;
wxString rzecz1 = TextCtrl1->GetValue();
wxString uroj1 = TextCtrl2->GetValue();
wxString rzecz2 = TextCtrl3->GetValue();
wxString uroj2 = TextCtrl4->GetValue();
double drzecz1 = atof(rzecz1);
double duroj1 = atof(uroj1);
double drzecz2 = atof(rzecz2);
double duroj2 = atof(uroj2);
Zespolona rzeczywiste {drzecz1,drzecz2};
Zespolona urojone {duroj1,duroj2};
Zespolona liczba_suma = oblicz.suma(rzeczywiste,urojone);
wxString wynik;
wynik.Printf("%.1f %.1fi", liczba_suma.re, liczba_suma.im);
TextCtrl5->SetValue(wynik );
}
void Zad2Frame::OnButton2Click(wxCommandEvent& event)
{
Obliczenia oblicz;
wxString rzecz1 = TextCtrl1->GetValue();
wxString uroj1 = TextCtrl2->GetValue();
wxString rzecz2 = TextCtrl3->GetValue();
wxString uroj2 = TextCtrl4->GetValue();
double drzecz1 = atof(rzecz1);
double duroj1 = atof(uroj1);
double drzecz2 = atof(rzecz2);
double duroj2 = atof(uroj2);
Zespolona rzeczywiste {drzecz1,drzecz2};
Zespolona urojone {duroj1,duroj2};
Zespolona liczba_roznica = oblicz.roznica(rzeczywiste,urojone);
wxString wynik;
wynik.Printf("%.1f %.1fi", liczba_roznica.re, liczba_roznica.im);
TextCtrl5->SetValue(wynik );
}
void Zad2Frame::OnButton3Click(wxCommandEvent& event)
{
Obliczenia oblicz;
wxString rzecz1 = TextCtrl1->GetValue();
wxString uroj1 = TextCtrl2->GetValue();
wxString rzecz2 = TextCtrl3->GetValue();
wxString uroj2 = TextCtrl4->GetValue();
double drzecz1 = atof(rzecz1);
double duroj1 = atof(uroj1);
double drzecz2 = atof(rzecz2);
double duroj2 = atof(uroj2);
Zespolona rzeczywiste {drzecz1,drzecz2};
Zespolona urojone {duroj1,duroj2};
Zespolona liczba_iloczyn = oblicz.iloczyn(rzeczywiste,urojone);
wxString wynik;
wynik.Printf("%.1f %.1fi", liczba_iloczyn.re, liczba_iloczyn.im);
TextCtrl5->SetValue(wynik );
}
void Zad2Frame::OnButton4Click(wxCommandEvent& event)
{
Obliczenia oblicz;
wxString rzecz1 = TextCtrl1->GetValue();
wxString uroj1 = TextCtrl2->GetValue();
wxString rzecz2 = TextCtrl3->GetValue();
wxString uroj2 = TextCtrl4->GetValue();
double drzecz1 = atof(rzecz1);
double duroj1 = atof(uroj1);
double drzecz2 = atof(rzecz2);
double duroj2 = atof(uroj2);
Zespolona rzeczywiste {drzecz1,drzecz2};
Zespolona urojone {duroj1,duroj2};
Zespolona liczba_iloraz = oblicz.iloraz(rzeczywiste,urojone);
wxString wynik;
wynik.Printf("%.1f %.1fi", liczba_iloraz.re, liczba_iloraz.im);
TextCtrl5->SetValue(wynik );
}