Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- #include <cstdlib>
- using namespace std;
- using namespace std;
- typedef struct
- {
- double re, im;
- } l_complex;
- // Base class
- class Kalkulator
- {
- public:
- virtual void dodawanie()=0;
- virtual void odejmowanie()=0;
- virtual void mnozenie()=0;
- virtual void dzielenie()=0;
- };
- class complex : public Kalkulator
- {
- private:
- l_complex wynik;
- l_complex x;
- l_complex y;
- public:
- void wypisz2(l_complex p)
- {
- cout<<p.im<<"+"<<p.re<<"i"<<endl;
- }
- void set_x(double p,double r)
- {
- x.im=p;
- x.re=r;
- }
- void set_y(double p,double r)
- {
- y.im=p;
- y.re=r;
- }
- void dodawanie()
- {
- wynik.re = x.re + y.re;
- wynik.im = x.im + y.im;
- wypisz2(wynik);
- }
- void odejmowanie()
- {
- wynik.re = x.re - y.re;
- wynik.im = x.im - y.im;
- wypisz2(wynik);
- }
- void mnozenie()
- {
- wynik.re = x.re*y.re - x.im*y.im;
- wynik.im = x.re*y.im + x.im*y.re;
- wypisz2(wynik);
- }
- void dzielenie()
- {
- double modol_kwadrat;
- modol_kwadrat = y.re*y.re + y.im*y.im;
- wynik.re = (x.re*y.re + x.im*y.im) / modol_kwadrat;
- wynik.im = (y.re*x.im - x.re*y.im) / modol_kwadrat;
- wypisz2(wynik);
- }
- };
- class matrix : public Kalkulator
- {
- /* Dodanie macierzy A + B = C */
- private:
- int ILWIERSZY;
- int ILKOLUMN;
- int ILWIERSZY2;
- int ILKOLUMN2;
- double **A;
- double **B;
- double **C;
- public:
- void wypisz(double **Z)
- {
- int i,j;
- for(i=0; i<ILWIERSZY; i++)
- {
- for(j=0; j<ILKOLUMN2; j++)
- {
- cout<<Z[i][j]<<" ";
- }
- cout<<endl;
- }
- }
- void get_C()
- {
- C= new double *[ILWIERSZY];
- int i;
- for(i=0; i<ILWIERSZY; i++)
- C[i] = new double[ILKOLUMN];
- }
- void get_ILWIERSZY(int x)
- {
- ILWIERSZY=x;
- }
- void get_ILKOLUMN(int x)
- {
- ILKOLUMN=x;
- }
- void get_ILWIERSZY2(int x)
- {
- ILWIERSZY2=x;
- }
- void get_ILKOLUMN2(int x)
- {
- ILKOLUMN2=x;
- }
- void get_A()
- {
- cout<<"Podaj macierz A:"<<endl;
- int i,j;
- A= new double *[ILWIERSZY];
- for (i = 0; i < ILWIERSZY; i++)
- {
- A[i] = new double[ILKOLUMN];
- for (j = 0; j < ILKOLUMN; j++)
- {
- cin >> A[i][j];
- }
- cout << endl;
- }
- }
- void get_B()
- {
- cout<<"Podaj macierz B:"<<endl;
- int i,j;
- B= new double *[ILWIERSZY2];
- for (i = 0; i < ILWIERSZY2; i++)
- {
- B[i] = new double[ILKOLUMN2];
- for (j = 0; j < ILKOLUMN2; j++)
- {
- cin >> B[i][j];
- }
- cout << endl;
- }
- }
- void dodawanie()
- {
- int i, j;
- for (i = 0; i < ILWIERSZY; i++)
- for (j = 0; j < ILKOLUMN; j++)
- C[i][j] = A[i][j] + B[i][j];
- wypisz(C);
- }
- /* Róznica macierzy A - B = C */
- void odejmowanie()
- {
- int i, j;
- for (i = 0; i < ILWIERSZY; i++)
- for (j = 0; j < ILKOLUMN; j++)
- C[i][j] = A[i][j] - B[i][j];
- wypisz(C);
- }
- /* Mnozenie macierzy A + B = C */
- void mnozenie()
- {
- int i, j, k;
- for (i = 0; i < ILWIERSZY; i++)
- for (j = 0; j < ILKOLUMN; j++)
- C[i][j] = 0;
- for (i = 0; i < ILWIERSZY; i++)
- for (j = 0; j < ILWIERSZY2; j++)
- for (k = 0; k < ILKOLUMN; k++)
- C[i][j] = C[i][j] + A[i][k] * B[k][j];
- wypisz(C);
- }
- void dzielenie()
- {
- cout << "Operacja nie wykonalna" << endl;
- }
- };
- int main()
- {
- int tryb, dzialanie;
- cout << "Wybierz tryb kalkulatora:\n" << "1. Zespolone\n"<<"2. Macierze" << endl;
- cin >> tryb;
- switch(tryb)
- {
- case 1:
- cout << "Wybrales dzialania na liczbach zespolonych:\nPodaj liczby:" << endl;
- break;
- case 2:
- cout << "Wybrales dzialania na macierzach:\n" << endl;
- break;
- default:
- cout << "Nie wybrales poprawnej opcji. Koncze program!" <<endl;
- break;
- }
- cout << "Chcesz:\n1.Dodac\n2.Odjac\n3.Mnozyc\n4.Dzielic" << endl;
- cin >> dzialanie;
- if(tryb==1 && dzialanie==1)
- {
- l_complex temp1, temp2;
- complex comp;
- cout << "Czesc Re pierwszej liczby: " ;
- cin >> temp1.re;
- cout << "Czesc Im pierwszej liczby: " ;
- cin >> temp1.im;
- cout << "Czesc Re drugiej liczby: " ;
- cin >> temp2.re;
- cout << "Czesc Im drugiej liczby: " ;
- cin >> temp2.im;
- comp.set_x(temp1.im,temp1.re);
- comp.set_y(temp2.im,temp2.re);
- comp.dodawanie();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement