Advertisement
MeehoweCK

Untitled

Nov 5th, 2020
662
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.50 KB | None | 0 0
  1. // main.cpp
  2. #include <iostream>
  3. #include "wymierne.h"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     Wymierna A(1, 3);
  10.     Wymierna B(1, 2);
  11.  
  12.     Wymierna C = A + B;
  13.  
  14.     Wymierna D = A - B;
  15.  
  16.     Wymierna E = A * B;
  17.     Wymierna F = A / B;
  18.  
  19.     C.wypisz();
  20.     D.wypisz();
  21.     E.wypisz();
  22.     F.wypisz();
  23.  
  24.     if(A > B)
  25.     {
  26.         cout << "A jest wieksze od B" << endl;
  27.     }
  28.     else
  29.     {
  30.         cout << "A nie jest wieksze od B" << endl;
  31.     }
  32.     if(A < B)
  33.     {
  34.         cout << "A jest mniejsze od B" << endl;
  35.     }
  36.     else
  37.     {
  38.         cout << "A nie jest mniejsze od B" << endl;
  39.     }
  40.     if(A == B)
  41.     {
  42.         cout << "A jest rowne B" << endl;
  43.     }
  44.     else
  45.     {
  46.         cout << "A nie jest rowne B" << endl;
  47.     }
  48.  
  49.     return 0;
  50. }
  51.  
  52. // wymierne.h
  53. int nwd(int, int);
  54.  
  55. class Wymierna
  56. {
  57.     friend Wymierna suma(Wymierna, Wymierna);
  58.     friend Wymierna roznica(Wymierna, Wymierna);
  59.     friend Wymierna iloczyn(Wymierna, Wymierna);
  60.     friend Wymierna iloraz(Wymierna, Wymierna);
  61.     // pola prywatne:
  62.     int licznik;
  63.     int mianownik;
  64. public:     // metody publiczne
  65.     Wymierna();     // konstruktor - metoda tworz¹ca obiekt
  66.     Wymierna(int);
  67.     Wymierna(int, int);
  68.     void set_licznik(int);
  69.     void set_mianownik(int);
  70.     int get_licznik();
  71.     int get_mianownik();
  72.     void wypisz();
  73.     double get_wartosc();
  74. };
  75.  
  76. bool operator>(Wymierna, Wymierna);
  77. bool operator<(Wymierna, Wymierna);
  78. bool operator==(Wymierna, Wymierna);
  79. Wymierna operator+(Wymierna, Wymierna);
  80. Wymierna operator-(Wymierna, Wymierna);
  81. Wymierna operator/(Wymierna, Wymierna);
  82. Wymierna operator*(Wymierna, Wymierna);
  83.  
  84. // wymierne.cpp
  85. #include <iostream>
  86. #include "wymierne.h"
  87.  
  88. using namespace std;
  89.  
  90. int nwd(int a, int b)
  91. {
  92.     if(a < 0) a = -a;
  93.     if(b < 0) b = -b;
  94.  
  95.     while(a != b)
  96.     {
  97.         if(a > b)
  98.             a -= b;
  99.         if(b > a)
  100.             b -= a;
  101.     }
  102.     return a;
  103. }
  104.  
  105. Wymierna::Wymierna()
  106. {
  107.     // konstruktor wype³nia pola prywatne jakimiœ pocz¹tkowymi wartoœciami:
  108.     licznik = 0;
  109.     mianownik = 1;
  110. }
  111.  
  112. Wymierna::Wymierna(int liczba)
  113. {
  114.     licznik = liczba;
  115.     mianownik = 1;
  116. }
  117.  
  118. Wymierna::Wymierna(int l, int m)
  119. {
  120.     int x = nwd(l, m);
  121.     licznik = l/x;
  122.     mianownik = m/x;
  123. }
  124.  
  125. void Wymierna::set_licznik(int l)
  126. {
  127.     licznik = l;
  128.     int x = nwd(licznik, mianownik);
  129.     licznik /= x;
  130.     mianownik /= x;
  131. }
  132.  
  133. void Wymierna::set_mianownik(int m)
  134. {
  135.     if(m == 0)
  136.     {
  137.         cout << "Nie mozna przypisac mianownikowi wartosci 0\n";
  138.         return;
  139.     }
  140.     mianownik = m;
  141.     int x = nwd(licznik, mianownik);
  142.     licznik /= x;
  143.     mianownik /= x;
  144. }
  145.  
  146. int Wymierna::get_licznik()
  147. {
  148.     return licznik;
  149. }
  150.  
  151. int Wymierna::get_mianownik()
  152. {
  153.     return mianownik;
  154. }
  155.  
  156. void Wymierna::wypisz()
  157. {
  158.     if(mianownik == 1)
  159.     {
  160.         cout << licznik << endl;
  161.         return;
  162.     }
  163.     cout << licznik << '/' << mianownik << endl;
  164. }
  165.  
  166. double Wymierna::get_wartosc()
  167. {
  168.     return 1.0 * licznik / mianownik;
  169. }
  170.  
  171. Wymierna suma(Wymierna A, Wymierna B)
  172. {
  173.     int l, m;
  174.  
  175.     l = A.licznik * B.mianownik + A.mianownik * B.licznik;
  176.  
  177.     m = A.mianownik * B.mianownik;
  178.  
  179.     Wymierna wynik (l, m);
  180.  
  181.     return wynik;
  182. }
  183.  
  184. Wymierna roznica(Wymierna A, Wymierna B)
  185. {
  186.     int l, m;
  187.  
  188.     l = A.licznik * B.mianownik - A.mianownik * B.licznik;
  189.  
  190.     m = A.mianownik * B.mianownik;
  191.  
  192.     Wymierna wynik (l, m);
  193.  
  194.     return wynik;
  195. }
  196.  
  197. Wymierna iloczyn(Wymierna A, Wymierna B)
  198. {
  199.     int l, m;
  200.  
  201.     l = A.licznik * B.licznik;
  202.  
  203.     m = A.mianownik * B.mianownik;
  204.  
  205.     Wymierna wynik (l,m);
  206.  
  207.     return wynik;
  208. }
  209.  
  210. Wymierna iloraz (Wymierna A, Wymierna B)
  211. {
  212.     int l, m;
  213.  
  214.     l = A.licznik * B.mianownik;
  215.  
  216.     m = A.mianownik * B.licznik;
  217.  
  218.     Wymierna wynik(l, m);
  219.  
  220.     return wynik;
  221. }
  222.  
  223. Wymierna operator+(Wymierna A, Wymierna B)
  224. {
  225.     return suma(A, B);
  226. }
  227.  
  228. Wymierna operator-(Wymierna A, Wymierna B)
  229. {
  230.     return roznica(A, B);
  231. }
  232.  
  233. Wymierna operator*(Wymierna A, Wymierna B)
  234. {
  235.     return iloczyn(A, B);
  236. }
  237.  
  238. Wymierna operator/(Wymierna A, Wymierna B)
  239. {
  240.     return iloraz(A, B);
  241. }
  242.  
  243. bool operator > (Wymierna A, Wymierna B)
  244. {
  245.     if(A.get_wartosc() > B.get_wartosc())
  246.         return true;
  247.     return false;
  248. }
  249.  
  250. bool operator < (Wymierna A, Wymierna B)
  251. {
  252.     if(A.get_wartosc() < B.get_wartosc())
  253.         return true;
  254.     return false;
  255. }
  256.  
  257. bool operator == (Wymierna A, Wymierna B)
  258. {
  259.     if(A.get_wartosc() == B.get_wartosc())
  260.         return true;
  261.     return false;
  262. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement