Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <stdio.h>
- using namespace std;
- bool czy_koniec = 0; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class ulamek{
- public:
- int licznik, mianownik;
- //kontruktor domyslny
- ulamek();
- //kontruktor ulamkowy wymmagane parametry
- ulamek(int, int);
- //deklaracjha funkcji zaprzyjaznionej
- friend ostream& operator<< (ostream&,ulamek&);
- friend istream& operator>> (istream&,ulamek&);
- bool operator> (ulamek);
- };
- //domyslny w razie w
- ulamek::ulamek(){
- licznik = 0;
- mianownik = 1;
- }
- //wartosci dla ulamek montujemy pod zmienne
- ulamek::ulamek(int a, int b){
- licznik = a;
- mianownik = b;
- }
- //przeladowanie wejscia
- istream& operator>> (istream &wejscie, ulamek& u){
- char kreska;
- wejscie >> u.licznik;
- u.mianownik = 1; //wektory kolidowaly to na sucho wstawilem
- wejscie.get(kreska);
- if (kreska == '|'){
- wejscie >> u.mianownik;
- czy_koniec = 0;
- return wejscie;
- }
- if (kreska == '\n'){ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- czy_koniec = 1; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- return wejscie;
- }
- //przeladowanie wyjscia
- ostream& operator<< (ostream &wyjscie, ulamek& u){
- wyjscie << u.licznik;
- if(u.mianownik == 1){
- wyjscie << " ";
- return wyjscie;
- }
- else
- wyjscie << "|" << u.mianownik << " ";
- return wyjscie;
- }
- //przeladowanie porowania wiekszosci
- bool ulamek::operator>(ulamek u){
- return licznik * u.mianownik > u.licznik * mianownik ? true : false;
- }
- int NWD(int a, int b){
- int pom;
- while(b!=0)
- {
- pom = b;
- b = a%b;
- a = pom;
- }
- return a;
- }
- int main()
- {
- ulamek u;
- vector <ulamek> Element;
- int dzielonko;
- char zatrzymaj;
- while( 1 ){
- cin >> u;
- Element.push_back(u);
- if(czy_koniec == 1) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- break; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- if( ( zatrzymaj = cin.peek() ) == '\n')
- break;
- }
- //sortowanie elementow
- for(int i=0;i<Element.size();i++)
- for(int j=1;j<Element.size()-i;j++)
- if(Element[j-1]>Element[j])
- swap(Element[j-1], Element[j]);
- for(int i = 0; i < Element.size(); i++){
- dzielonko = NWD(Element[i].licznik, Element[i].mianownik);
- Element[i].licznik = Element[i].licznik/dzielonko;
- Element[i].mianownik = Element[i].mianownik/dzielonko;
- }
- for(int i = 0; i < Element.size(); i++)
- {
- cout << Element[i];
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement