UÂżytkownik
Jakby sie komuś chciało analizować to prosze bardzo :
#include <iostream> using namespace std; class zesp { private: double re; double im; public: zesp(double a=0, double b=0):re(a),im(b) { }; zesp operator*(zesp a) { zesp wynik; wynik.re=(re*a.re-im*a.im); wynik.im=(re*a.im+im*a.re); return(wynik); }; zesp operator+(zesp a) { zesp wyn; wyn.re=re+a.re; wyn.im=im+a.im; return(wyn); }; void druk() { cout<<"("<<re<<"+i"<<im<<")"; }; }; class wektor { private: zesp *el; int dl; public: wektor (wektor &a):dl(a.dl) { el=new zesp[dl]; for(int i=0;i<dl;i++) { el[i]=a.el[i]; } }; wektor(int a): dl(a) { el= new zesp[dl]; double w,e; for (int i=0;i<dl;i++) { cout<<"element "<<i+1<<" czesc re: "; cin>>w; cout<<" im: "; cin>>e; zesp a(w,e); el[i]=a; } }; ~wektor() { delete []el; }; int dlu() { return(dl); }; zesp operator* (wektor a) { zesp wynik=0; int il; if (dl<a.dl) { il=dl; cout<<"wektor drugi zostal skrocony\n"; } if (dl>a.dl) { il=a.dl; cout<<"wektor pierwszy zostal skrocony\n"; } if (dl==a.dl) { il=dl; } for (int i=0;i<il;i++) { wynik=wynik+(el[i]*a.el[i]); } return(wynik); }; void zmiana(int a) { zesp *pom=new zesp[a]; if (a<=dl) { dl=a; for (int i=0;i<a;i++) { pom[i]=el[i]; } } else { int i=0; double w,e; for (i;i<dl;i++) { pom[i]=el[i]; } cout<<"nowy wektor ma wieksza dlugosc wiec, musisz podac nowe elementy\nelementy przepisane: "<<dl; cout<<"\nbrakujace elementy: "<<a-dl<<"\n"; for(i;i<a;i++) { cout<<"element "<<i+1<<" czesc re: "; cin>>w; cout<<" im: "; cin>>e; zesp a(w,e); pom[i]=a; } dl=a; } delete []el; el=new zesp[dl]; for (int k=0;k<a;k++) { el[k]=pom[k]; } delete []pom; }; void druk() { for(int i=0;i<dl;i++) { el[i].druk(); } }; }; int main() { char zg; do { int wyb; cout<<"1 --> zamiana dlugosci\n"; cout<<"2 --> mnozenie wektorow\n"; cout<<"3 --> konstruktor kopiujacy\n"; cout<<"wybierz funkcje: "; cin>>wyb; switch(wyb) { case(1): { cout<<"podaj dlugosc: "; int ww; cin>>ww; wektor a(ww); a.druk(); int za; cout<<" na ile zmieniamy? "; cin>>za; cout<<"\n"; a.zmiana(za); a.druk(); break; } case (2): { int d,q; cout<<"podaj dlugosc pierwszego wektora "; cin>>d; cout<<"podaj dlugosc drugiego wektora "; cin>>q; cout<<"pierwszy wektor: \n"; wektor a(d); cout<<"drugi wektor: \n"; wektor b(q); (a*b).druk(); break; } case (3): { int ww; cout<<"podaj dlugosc wektora wzorcowego: "; cin>>ww; cout<<"wektor wzorcowy: \n"; wektor a(ww); wektor q(a); cout<<"wektor skopiowany: "; q.druk(); break; } default: { cout<<"podaj liczbe od 1 do 3\n"; } } cout<<"Pracujemy dajlej? t/n "; cin>>zg; }while(zg=='t'); }
Offline