Advertisement
adwas33

Untitled

Jun 16th, 2021
811
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int NWD(int a, int b)
  6. {
  7.     int pom;
  8.  
  9.     while(b!=0)
  10.     {
  11.         pom = b;
  12.         b = a%b;
  13.         a = pom;
  14.     }
  15.  
  16.     return a;
  17. }
  18. class Ulamek
  19. {
  20. public:
  21.     Ulamek(int licznik, int mianownik);
  22.  
  23.     Ulamek(int licznik);
  24.     operator double ()
  25.     {
  26.         return (double)licznik/mianownik;
  27.     }
  28.     void skroc_ulamek(){
  29.         int maksymalna = NWD(licznik,mianownik);
  30.         licznik=licznik/maksymalna;
  31.         mianownik=mianownik/maksymalna;
  32.     }
  33.  
  34.     friend std::ostream &operator<<(std::ostream &os, const Ulamek &ulamek);
  35.  
  36. private:
  37.     friend Ulamek dodaj(Ulamek,Ulamek);
  38.     int licznik,mianownik=1;
  39.  
  40. };
  41. Ulamek dodaj(Ulamek pierwszy,Ulamek drugi)
  42. {
  43.  
  44.     if(drugi.mianownik!=pierwszy.mianownik)
  45.     {
  46.         pierwszy.licznik=pierwszy.licznik * drugi.mianownik;// sprowadzanie do wspólnego mianownika
  47.         drugi.licznik=drugi.licznik * pierwszy.mianownik;
  48.         pierwszy.mianownik=pierwszy.mianownik*drugi.mianownik;
  49.         return Ulamek(drugi.licznik+pierwszy.licznik,pierwszy.mianownik);
  50.  
  51.     } else return Ulamek(drugi.licznik+pierwszy.licznik,drugi.mianownik);
  52. }
  53.  
  54. Ulamek::Ulamek(int licznik, int mianownik) : licznik(licznik), mianownik(mianownik) {}
  55.  
  56. Ulamek::Ulamek(int licznik) : licznik(licznik) {}
  57.  
  58. std::ostream &operator<<(std::ostream &os, const Ulamek &ulamek) {
  59.     if(ulamek.mianownik!=1)
  60.         os  << ulamek.licznik << " / " << ulamek.mianownik;
  61.     else os<<ulamek.licznik;
  62.  
  63.     return os;
  64. }
  65.  
  66. double kwadrat_liczby(double ulamek)
  67. {
  68.     return ulamek*ulamek;
  69. }
  70.  
  71. int main() {
  72.     Ulamek tablica[3] = {Ulamek(1,2),Ulamek(5,8),Ulamek(7,9)};
  73.     cout<<tablica[0]<<endl<<tablica[1]<<endl<<tablica[2]<<endl;
  74.     cout<<dodaj(tablica[0],tablica[1])<<endl;
  75.     cout<<dodaj(tablica[0],7)<<endl;
  76.     cout<<kwadrat_liczby(tablica[2])<<endl;
  77.     Ulamek nowy(88,22);
  78.     nowy.skroc_ulamek();
  79.     cout<<nowy;
  80.  
  81.     return 0;
  82. }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement