przeładowanie operatorów - kalkulator liczb zespolonych
- Pobierz link
- X
- Inne aplikacje
nie jest jakiś wyszukany, brakuje sporo funkcji, no ale ;p
pomijam fakt że czasem potrafi wywalić dziwne rzeczy typu (0,-0) których nie chce mi się eliminować, ale w 70% spełnia swoje zadanie (pozostałe 30% to brak sin, cos, exp, ln itp).
klik:
klik:
- #include <iostream>
- #include "math.h"
- #define M_PI 3.14159265358979323846
- using namespace std;
- template<class T>
- class zesp
- {
- public:
- zesp () { };
- T getX()const{ return real; }
- T getY()const{return imag;}
- void getX(T wartosc){
- real=wartosc;}
- void getY(T wartosc){
- imag=wartosc;}
- zesp(T r, T i)
- {
- real = r;
- imag = i;
- };
- zesp operator=(const zesp& a);
- zesp(const zesp& wartosc);
- zesp operator+ (zesp); //dodawanie
- T abs() //modul
- {
- return(sqrt((real*real)+(imag*imag)));
- }
- zesp conj()//liczba sprzezona
- {
- if(imag!=0)
- return(zesp(real, -imag));
- else return(zesp(real,imag));
- }
- T faza()
- {
- if (real >= 0) return (atan2(imag, real));
- return (M_PI + atan2(imag, real));
- }
- friend zesp operator* (const zesp o1, const zesp o2)
- {
- zesp o;
- o.real = (o1.real * o2.real) - (o1.imag * o2.imag);
- o.imag = (o1.real * o2.imag) + (o1.imag * o2.real);
- return o;
- }
- friend zesp operator/ (const zesp o1, const zesp o2) {
- zesp o;
- o.real = ((o1.real * o2.real) + (o1.imag * o2.imag))/((o2.real * o2.real) + (o2.imag * o2.imag));
- o.imag = (((o1.real * o2.imag) - (o1.imag * o2.real))*(-1))/((o2.real * o2.real) + (o2.imag * o2.imag));
- return o;
- }
- friend ostream & operator << (ostream & s, const zesp & c)
- {
- s << "(" << c.real << "," << c.imag << ")";
- return s;
- }
- private:
- T real;
- T imag;
- };
- template<class T>
- zesp<T> zesp<T>::operator+( zesp c) {
- zesp n;
- n.real = this->real + c.real;
- n.imag = this->imag + c.imag;
- return n;
- }
- template<class T>
- zesp<T> zesp<T>::operator=(const zesp& a)
- {
- return zesp(a); }
- template<class T>
- zesp<T>::zesp(const zesp& wartosc)//kostruktor(inicjalizator) kopiujący(z funkcja typu const zz przezwiskiem klsy Complex na wartosc, po to by nie działac na oryginalnym obiekcie)
- {
- imag=wartosc.imag;
- real=wartosc.real;
- }
- int main()
- {
- int rea=0;
- int ima=0;
- int reb=0;
- int imb=0;
- cout<<"podaj czesc re liczby a: \n";
- cin>>rea;
- cout<<"podaj czesc im liczby a: \n";
- cin>>ima;
- zesp<double>a(rea,ima);
- cout<<"liczba a: "<<a.getX()<<"+"<<a.getY()<<"i\n\n";
- cout<<"podaj czesc re liczby b: \n";
- cin>>reb;
- cout<<"podaj czesc im liczby b: \n";
- cin>>imb;
- zesp<double> b(reb,imb);
- cout<<"liczba b: "<<b.getX()<<"+"<<b.getY()<<"i\n\n";
- cout<<"\nmnozenie: \n";
- cout << a*b<<endl;
- cout<<"\npodziel: \n";
- cout << a/b << endl;
- cout<<"\nmodul: \n";
- cout << a.abs() << endl;
- cout << b.abs() << endl;
- cout<<"\nliczba sprzezona: \n";
- cout << a.conj() << endl;
- cout << b.conj() << endl;
- cout<<"\nfaza liczby zespolonej: \n";
- cout << a.faza() << endl;
- cout << b.faza() << endl;
- system("pause");
- return 0;
- }
3D
C++
complex
cpp
informatyka
IT
kalkulator
liczby
liczby urojone
liczby zespolone
operatory
programowanie
studia
zespolone
- Pobierz link
- X
- Inne aplikacje
Komentarze
Prześlij komentarz