Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <stdio.h>
  4.  
  5. using namespace std;
  6.  
  7. bool czy_koniec = 0; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  8.  
  9. class ulamek{
  10.  
  11.     public:
  12.  
  13.  
  14.         int licznik, mianownik;
  15.  
  16.         //kontruktor domyslny
  17.         ulamek();
  18.         //kontruktor ulamkowy wymmagane parametry
  19.         ulamek(int, int);
  20.  
  21.         //deklaracjha funkcji zaprzyjaznionej
  22.  
  23.          friend ostream& operator<< (ostream&,ulamek&);
  24.          friend istream& operator>> (istream&,ulamek&);
  25.          bool operator> (ulamek);
  26. };
  27.  
  28.  
  29. //domyslny w razie w
  30. ulamek::ulamek(){
  31.     licznik = 0;
  32.     mianownik = 1;
  33. }
  34.  
  35. //wartosci dla ulamek montujemy pod zmienne
  36. ulamek::ulamek(int a, int b){
  37.     licznik = a;
  38.     mianownik = b;
  39. }
  40. //przeladowanie wejscia
  41. istream& operator>> (istream &wejscie, ulamek& u){
  42.  
  43.    char kreska;
  44.    wejscie >> u.licznik;
  45.    u.mianownik = 1; //wektory kolidowaly to na sucho wstawilem
  46.    wejscie.get(kreska);
  47.  
  48.    if (kreska == '|'){
  49.         wejscie >> u.mianownik;
  50.         czy_koniec = 0;
  51.         return wejscie;
  52.    }
  53.    if (kreska == '\n'){ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  54.         czy_koniec = 1; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  55.    } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  56.  
  57.     return wejscie;
  58. }
  59. //przeladowanie wyjscia
  60. ostream& operator<< (ostream &wyjscie, ulamek& u){
  61.  
  62.    wyjscie << u.licznik;
  63.    if(u.mianownik == 1){
  64.         wyjscie << " ";
  65.         return wyjscie;
  66.    }
  67.    else
  68.     wyjscie << "|" << u.mianownik << " ";
  69.  
  70.    return wyjscie;
  71.  
  72. }
  73.  
  74. //przeladowanie porowania wiekszosci
  75. bool ulamek::operator>(ulamek u){
  76.  
  77.     return licznik * u.mianownik > u.licznik * mianownik ? true : false;
  78. }
  79.  
  80.  
  81. int NWD(int a, int b){
  82.  
  83.     int pom;
  84.  
  85.     while(b!=0)
  86.     {
  87.         pom = b;
  88.         b = a%b;
  89.         a = pom;
  90.     }
  91.  
  92.     return a;
  93. }
  94.  
  95.  
  96. int main()
  97. {
  98.  
  99.     ulamek u;
  100.     vector <ulamek> Element;
  101.     int dzielonko;
  102.     char zatrzymaj;
  103.  
  104.        while( 1 ){
  105.  
  106.         cin >> u;
  107.         Element.push_back(u);
  108.         if(czy_koniec == 1) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  109.             break; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  110.         if( ( zatrzymaj = cin.peek() ) == '\n')
  111.             break;
  112.     }
  113.  
  114.     //sortowanie elementow
  115.     for(int i=0;i<Element.size();i++)
  116.         for(int j=1;j<Element.size()-i;j++)
  117.         if(Element[j-1]>Element[j])
  118.             swap(Element[j-1], Element[j]);
  119.  
  120.  
  121.  
  122.     for(int i = 0; i < Element.size(); i++){
  123.  
  124.         dzielonko = NWD(Element[i].licznik, Element[i].mianownik);
  125.         Element[i].licznik = Element[i].licznik/dzielonko;
  126.         Element[i].mianownik = Element[i].mianownik/dzielonko;
  127.     }
  128.  
  129.      for(int i = 0; i < Element.size(); i++)
  130.     {
  131.         cout << Element[i];
  132.     }
  133.  
  134.  
  135.     return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement