Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <stdio.h>
  4.  
  5. using namespace std;
  6.  
  7. class ulamek{
  8.  
  9.     public:
  10.  
  11.  
  12.         int licznik, mianownik;
  13.  
  14.         //kontruktor domyslny
  15.         ulamek();
  16.         //kontruktor ulamkowy wymmagane parametry
  17.         ulamek(int, int);
  18.  
  19.         //deklaracjha funkcji zaprzyjaznionej
  20.  
  21.          friend ostream& operator<< (ostream&,ulamek&);
  22.          friend istream& operator>> (istream&,ulamek&);
  23.          NWD(ulamek&);
  24.          ulamek operator+ (ulamek&);
  25.  
  26.  
  27. };
  28.  
  29. ulamek::ulamek(){
  30.     licznik = 0;
  31.     mianownik = 1;
  32. }
  33.  
  34.  
  35. ulamek::ulamek(int a, int b){
  36.     licznik = a;
  37.     mianownik = b;
  38. }
  39.  
  40. istream& operator>> (istream &wejscie, ulamek& u)
  41. {
  42.    char kreska;
  43.    wejscie >> u.licznik;
  44.    wejscie.get(kreska);
  45.  
  46.    if (kreska == '|'){
  47.  
  48.         wejscie >> u.mianownik;
  49.         return wejscie;
  50.    }
  51.  
  52.    else
  53.    return wejscie;
  54. }
  55.  
  56. ostream& operator<< (ostream &wyjscie, ulamek& u)
  57. {
  58.    wyjscie << u.licznik;
  59.    if(u.mianownik == 1){
  60.         wyjscie << " ";
  61.         return wyjscie;
  62.    }
  63.    else
  64.     wyjscie << "|" << u.mianownik << " ";
  65.  
  66.    return wyjscie;
  67.  
  68. }
  69.  
  70. ulamek::NWD(ulamek& u){
  71.  
  72.  
  73.     while(u.licznik!=u.mianownik)
  74.        if(u.licznik>u.mianownik)
  75.            u.licznik-=u.mianownik; //lub a = a - b;
  76.        else
  77.            u.mianownik-=u.licznik; //lub b = b-a
  78.     return u.licznik; // lub b - obie zmienne przechowuj¹ wynik NWD(a,b)
  79.  
  80.  
  81. }
  82.  
  83. ulamek ulamek::operator+ (ulamek& u)
  84. {
  85.    ulamek u1;
  86.    u1.licznik=licznik * u.mianownik + u.licznik * mianownik;
  87.    u1.mianownik=mianownik * u.mianownik;
  88.    if(u1.licznik % u1.mianownik == 0)
  89.    u1.licznik = u1.licznik / u1.mianownik;
  90.    u1.mianownik = 1;
  91. }
  92.  
  93. int main()
  94. {
  95.  
  96.     ulamek u;
  97.     vector <ulamek> Element;
  98.  
  99.     // Problemem jest to ze mam jak by jedną nazwe obiektu klasy czyli Element i on mi zapamiętuje mianownik zamiast ze tak powiem kozystac z mojego kontruktora kiedy nie podalem mianownika a kontruktor daje mi domyslnie 1 a tutaj to nie działa p  ;
  100.     cin >> u;
  101.     Element.push_back(u);
  102.     cin >> u;
  103.     Element.push_back(u);
  104.     cin >> u;
  105.     Element.push_back(u);
  106.  
  107.     cout << Element[0];
  108.     cout << Element[1];
  109.     cout << Element[2];
  110.  
  111.     cout << Element[1].mianownik;
  112. /*
  113.     while(getchar() != '\n'){
  114.  
  115.         cin >> u;
  116.         Element.push_back(u);
  117.     }
  118. */
  119.  
  120. /*
  121.      for(int i = 0; i < Element.size(); i++)
  122.     {
  123.         cout << Element[i];
  124.     }
  125. */
  126. /*
  127.     ulamek u1, u2, u3, u4,  wynik;
  128.  
  129.  
  130.     cin >> u1;
  131.     cout << u1;
  132.     cin >> u2;
  133.     cout << u2;
  134.     cin >> u3;
  135.     cout << u3;
  136.     cin >> u4;
  137.     cout << u4;
  138. */
  139.  
  140.  
  141.  
  142.  
  143.    // wynik = u1+u2;
  144.   //  cout << u1 << u2;
  145.    // cout << wynik;
  146.  
  147.  
  148.  
  149.     return 0;
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement