MeehoweCK

Untitled

May 16th, 2020
1,171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Wymierna
  6. {
  7.     friend ostream& operator<<(ostream&, const Wymierna&);
  8.     friend Wymierna operator+(Wymierna, Wymierna);
  9.     friend Wymierna operator*(Wymierna, Wymierna);
  10.     friend Wymierna operator-(Wymierna, Wymierna);
  11.     friend Wymierna operator/(Wymierna, Wymierna);
  12. private:
  13.     int licznik;
  14.     int mianownik;
  15. public:
  16.     Wymierna();         // tworzy liczbe wymierna równa 0
  17.     Wymierna(int);      // tworzy liczbe wymierna o podanej wartosci
  18.     Wymierna(int, int); // tworzy liczbe wymierna o podanych liczniku i mianowniku
  19.     double wartosc();   // zwraca wartosc liczby wymiernej
  20. };
  21.  
  22. Wymierna::Wymierna() {
  23.     licznik=0;
  24.     mianownik=1;
  25. }
  26.  
  27. Wymierna::Wymierna(int a, int b) {
  28.     licznik=a;
  29.     mianownik=b;
  30. }
  31.  
  32. Wymierna::Wymierna(int c) {
  33.     licznik=c;
  34.     mianownik=1;
  35. }
  36. Wymierna operator*(Wymierna A, Wymierna B) {
  37.     Wymierna wynik;
  38.     wynik.mianownik = A.mianownik * B.mianownik;
  39.     wynik.licznik = A.licznik * B.licznik;
  40.     return wynik;
  41. }
  42.  
  43. ostream& operator<<(ostream& strumien, const Wymierna& wymierna) {
  44.     strumien << wymierna.licznik << "/" << wymierna.mianownik;
  45.     return strumien;
  46. }
  47.  
  48. unsigned nwd(unsigned a, unsigned b)
  49. {
  50.     while(a != b)
  51.     {
  52.         if(a > b)
  53.             a = a - b;
  54.         if(b > a)
  55.             b = b - a;
  56.     }
  57.     return a;
  58. }
  59.  
  60. int nww(int d, int e) {
  61.     return d * e / nwd(d,e);
  62. }
  63.  
  64. Wymierna operator+(Wymierna A, Wymierna B) {
  65.     Wymierna wynik;
  66.     nww(A.mianownik,B.mianownik);
  67.     wynik.licznik = A.licznik + B.licznik;
  68.     return wynik;
  69. }
  70.  
  71. Wymierna operator-(Wymierna A, Wymierna B) {
  72.     Wymierna wynik;
  73.     wynik.licznik = A.licznik - B.licznik;
  74.     return wynik;
  75. }
  76.  
  77. Wymierna operator/(Wymierna A, Wymierna B) {
  78.     Wymierna wynik;
  79.     wynik.mianownik = A.mianownik * B.licznik;
  80.     wynik.licznik = A.licznik * B.mianownik;
  81.     return wynik;
  82. }
  83.  
  84. int main()
  85. {
  86.     Wymierna A(5,2);
  87.     Wymierna B(7,3);
  88.  
  89.     cout << A << endl;
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment