Advertisement
MeehoweCK

Untitled

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