Advertisement
MeehoweCK

Untitled

Apr 10th, 2021
930
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.30 KB | None | 0 0
  1. // Zadanie 3.
  2. #include <iostream>
  3. #include <conio.h>
  4.  
  5. using namespace std;
  6.  
  7. class LiczbaZespolona
  8. {
  9.     friend LiczbaZespolona* suma(LiczbaZespolona*, LiczbaZespolona*);
  10.     friend LiczbaZespolona* roznica(LiczbaZespolona*, LiczbaZespolona*);
  11.     friend LiczbaZespolona* iloczyn(LiczbaZespolona*, LiczbaZespolona*);
  12.     friend LiczbaZespolona* iloraz(LiczbaZespolona*, LiczbaZespolona*);
  13.     double im;
  14.     double re;
  15. public:
  16.     LiczbaZespolona();
  17.     LiczbaZespolona(double);
  18.     LiczbaZespolona(double, double);
  19.     void wyswietl() const;
  20. };
  21.  
  22. LiczbaZespolona::LiczbaZespolona() : im(0), re(0) {}
  23. LiczbaZespolona::LiczbaZespolona(double x) : im(x), re(x) {}
  24. LiczbaZespolona::LiczbaZespolona(double x, double y) : im(x), re(y) {}
  25.  
  26. void LiczbaZespolona::wyswietl() const
  27. {
  28.     cout << re << ", im = " << im << endl;
  29. }
  30.  
  31. LiczbaZespolona* suma(LiczbaZespolona* A, LiczbaZespolona* B)
  32. {
  33.     LiczbaZespolona* wynik = new LiczbaZespolona;
  34.     wynik->re = A->re + B->re;
  35.     wynik->im = A->im + B->im;
  36.     return wynik;
  37. }
  38.  
  39. LiczbaZespolona* roznica(LiczbaZespolona* A, LiczbaZespolona* B)
  40. {
  41.     LiczbaZespolona* wynik = new LiczbaZespolona;
  42.     wynik->re = A->re - B->re;
  43.     wynik->im = A->im - B->im;
  44.     return wynik;
  45. }
  46.  
  47. LiczbaZespolona* iloczyn(LiczbaZespolona* A, LiczbaZespolona* B)
  48. {
  49.     LiczbaZespolona* wynik = new LiczbaZespolona;
  50.     wynik->re = A->re * B->re;
  51.     wynik->im = A->im * B->im;
  52.     return wynik;
  53. }
  54.  
  55. LiczbaZespolona* iloraz(LiczbaZespolona* A, LiczbaZespolona* B)
  56. {
  57.     LiczbaZespolona* wynik = new LiczbaZespolona;
  58.     wynik->re = A->re / B->re;
  59.     wynik->im = A->im / B->im;
  60.     return wynik;
  61. }
  62.  
  63. int main()
  64. {
  65.     LiczbaZespolona* tablica[100];
  66.     unsigned ile = 0;
  67.     for(unsigned i = 0; i < 100; ++i)
  68.         tablica[i] = nullptr;
  69.  
  70.     char komenda;
  71.     double x, y;
  72.     unsigned a, b;
  73.     bool flaga = true;
  74.  
  75.     while(flaga)
  76.     {
  77.         cout << "Co chcesz zrobic?\n";
  78.         cout << "\tN - utworzenie nowej liczby zespolonej (2 argumenty)\n";
  79.         cout << "\tR - utworzenie nowej liczby zespolonej (1 argument)\n";
  80.         cout << "\tW - wyswietl wartosc liczby\n";
  81.         cout << "\t+ - suma\n";
  82.         cout << "\t- - roznica\n";
  83.         cout << "\t* - iloczyn\n";
  84.         cout << "\t/ - iloraz\n";
  85.         cout << "\tK - wyjdz z programu\n";
  86.  
  87.         do
  88.         {
  89.             komenda = _getch();
  90.             komenda = toupper(komenda);
  91.         }
  92.         while(komenda != 'N' && komenda != 'R' && komenda != 'W' && komenda != '+' && komenda != '-' && komenda != '*' && komenda != '/' && komenda != 'K');
  93.  
  94.         switch(komenda)
  95.         {
  96.         case 'N':
  97.             cout << "Podaj dwa argumenty: ";
  98.             cin >> x >> y;
  99.             tablica[ile] = new LiczbaZespolona(x, y);
  100.             ++ile;
  101.             break;
  102.         case 'R':
  103.             cout << "Podaj argument: ";
  104.             cin >> x;
  105.             tablica[ile] = new LiczbaZespolona(x);
  106.             ++ile;
  107.             break;
  108.         case 'W':
  109.             cout << "Podaj numer liczby, ktora chcesz wyswietlic: ";
  110.             cin >> a;
  111.             if(a >= ile)
  112.                 cout << "Jeszcze nie wczytano liczby o tym numerze\n";
  113.             else
  114.                 tablica[a]->wyswietl();
  115.             break;
  116.         case '+':
  117.             cout << "Podaj numery dwoch liczb, ktore chcesz dodac: ";
  118.             cin >> a >> b;
  119.             if(a >= ile || b >= ile)
  120.                 cout << "Przynajmniej jedna z podanych liczb nie istnieje\n";
  121.             else
  122.             {
  123.                 tablica[ile] = suma(tablica[a], tablica[b]);
  124.                 cout << "Zapisano liczbe na indeks " << ile << endl;
  125.                 ++ile;
  126.             }
  127.             break;
  128.         case '-':
  129.             cout << "Podaj numery dwoch liczb, ktore chcesz odjac: ";
  130.             cin >> a >> b;
  131.             if(a >= ile || b >= ile)
  132.                 cout << "Przynajmniej jedna z podanych liczb nie istnieje\n";
  133.             else
  134.             {
  135.                 tablica[ile] = roznica(tablica[a], tablica[b]);
  136.                 cout << "Zapisano liczbe na indeks " << ile << endl;
  137.                 ++ile;
  138.             }
  139.             break;
  140.         case '*':
  141.             cout << "Podaj numery dwoch liczb, ktore chcesz pomnozyc: ";
  142.             cin >> a >> b;
  143.             if(a >= ile || b >= ile)
  144.                 cout << "Przynajmniej jedna z podanych liczb nie istnieje\n";
  145.             else
  146.             {
  147.                 tablica[ile] = iloczyn(tablica[a], tablica[b]);
  148.                 cout << "Zapisano liczbe na indeks " << ile << endl;
  149.                 ++ile;
  150.             }
  151.             break;
  152.         case '/':
  153.             cout << "Podaj numery dwoch liczb, ktore chcesz podzielic: ";
  154.             cin >> a >> b;
  155.             if(a >= ile || b >= ile)
  156.                 cout << "Przynajmniej jedna z podanych liczb nie istnieje\n";
  157.             else
  158.             {
  159.                 tablica[ile] = iloraz(tablica[a], tablica[b]);
  160.                 cout << "Zapisano liczbe na indeks " << ile << endl;
  161.                 ++ile;
  162.             }
  163.             break;
  164.         case 'K':
  165.             cout << "Nastapi wyjscie z programu. Wcisnij dowolny przycisk...";
  166.             _getch();
  167.             flaga = false;
  168.         }
  169.     }
  170.  
  171.     for(unsigned i = 0; i < ile; ++i)
  172.         delete tablica[i];
  173.  
  174.     return 0;
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement