Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2020
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. // Lukasz Szulborski, 79471
  7.  
  8. int NWD(int a, int b)
  9. {
  10.     while(a!=b)
  11.        if(a>b)
  12.            a-=b;
  13.        else
  14.            b-=a;
  15.     return a;
  16. }
  17.  
  18. class Ulamek {
  19.     public:
  20.         int licznik, mianownik;
  21.        
  22.         Ulamek(int licz = 0, int mian = 1){
  23.             licznik = licz;
  24.             mianownik = mian;
  25.         }
  26.        
  27.         Ulamek skroc(Ulamek ul){
  28.             int nwdUlamka = NWD(ul.licznik, ul.mianownik);
  29.            
  30.             ul.licznik /= nwdUlamka;
  31.             ul.mianownik /= nwdUlamka;
  32.            
  33.             return ul;
  34.         }
  35.        
  36.         void setLicznik(int l){
  37.             licznik = l;
  38.         }
  39.        
  40.         void setMianownik(int m){
  41.             mianownik = m;
  42.         }
  43.        
  44.         Ulamek operator + (Ulamek const &prawy){
  45.             Ulamek wynik;
  46.             int ujemne = 0;
  47.            
  48.             wynik.licznik = licznik * prawy.mianownik + prawy.licznik * mianownik;
  49.             wynik.mianownik = mianownik * prawy.mianownik;
  50.            
  51.             if( wynik.licznik < 0 ){
  52.                 wynik.licznik *= -1;
  53.                 ujemne = 1;
  54.             }
  55.             if( wynik.mianownik < 0 ){
  56.                 wynik.mianownik *= -1;
  57.                 ujemne = 1;
  58.             }
  59.             if( wynik.mianownik < 0 && wynik.licznik < 0 ){
  60.                 wynik.mianownik *= -1;
  61.                 wynik.licznik *= -1;
  62.             }
  63.            
  64.             wynik = skroc(wynik);
  65.            
  66.             if( ujemne == 1 ) wynik.licznik *= -1;
  67.            
  68.             return wynik;
  69.         }
  70.        
  71.         Ulamek operator - (Ulamek const &prawy){
  72.             Ulamek wynik;
  73.             int ujemne = 0;
  74.            
  75.             wynik.licznik = licznik * prawy.mianownik - prawy.licznik * mianownik;
  76.             wynik.mianownik = mianownik * prawy.mianownik;
  77.            
  78.             if( wynik.licznik < 0 ){
  79.                 wynik.licznik *= -1;
  80.                 ujemne = 1;
  81.             }
  82.             if( wynik.mianownik < 0 ){
  83.                 wynik.mianownik *= -1;
  84.                 ujemne = 1;
  85.             }
  86.             if( wynik.mianownik < 0 && wynik.licznik < 0 ){
  87.                 wynik.mianownik *= -1;
  88.                 wynik.licznik *= -1;
  89.             }
  90.            
  91.             wynik = skroc(wynik);
  92.            
  93.             if( ujemne == 1 ) wynik.licznik *= -1;
  94.            
  95.             return wynik;
  96.         }
  97.        
  98.         Ulamek operator * (Ulamek const &prawy){
  99.             Ulamek wynik;
  100.             wynik.licznik = licznik * prawy.licznik;
  101.             wynik.mianownik = mianownik * prawy.mianownik;
  102.            
  103.             wynik = skroc(wynik);
  104.            
  105.             return wynik;
  106.         }
  107.        
  108.         Ulamek operator / (Ulamek const &prawy){
  109.             Ulamek wynik;
  110.             wynik.licznik = licznik * prawy.mianownik;
  111.             wynik.mianownik = mianownik * prawy.licznik;
  112.            
  113.             wynik = skroc(wynik);
  114.            
  115.             return wynik;
  116.         }
  117.        
  118.         int operator == (Ulamek const &prawy){
  119.             if( licznik == prawy.licznik && mianownik == prawy.mianownik ){
  120.                 return 1;
  121.             }else{
  122.                 return 0;
  123.             }
  124.         }
  125.        
  126.         friend ostream & operator<<(ostream &out, const Ulamek &ul){
  127.             out << ul.licznik << "/" << ul.mianownik << endl;
  128.             return out;
  129.         }
  130.        
  131.         friend istream & operator>>(istream &in, Ulamek &ul){
  132.             string s;
  133.            
  134.             if( false ){
  135.                 char slash = 0;
  136.                 in >> ul.licznik >> slash >> ul.mianownik; 
  137.             }else{
  138.                 char slash = 0;
  139.                 char space = 0;
  140.                 int total = 0;
  141.                 int licznik = 0;
  142.                 int mianownik = 0;
  143.                 in >> total >> licznik >> slash >> mianownik;
  144.                 cout << licznik;
  145.                 Ulamek tot(total), res;
  146.                 ul.setLicznik(licznik);
  147.                 ul.setMianownik(mianownik);
  148.                 res = tot + ul;
  149.                 ul.setLicznik(res.licznik);
  150.                 ul.setMianownik(res.mianownik);
  151.             }
  152.             return in;
  153.         }
  154.        
  155. };
  156.  
  157. int main(int argc, char** argv) {
  158.    
  159. //  Ulamek u1(2,3), u2(3,1), u3(5),u4,u5;
  160. //     
  161. //  u4= (u1*u3)/(u3+u4); // 2/3
  162. //  u5=(u1/u2)-u3; // -43/9
  163. // 
  164. //  u4 = u4 + 5;
  165.  
  166.     Ulamek u1, u2;
  167.     cin >> u1;
  168.     cout << u1;
  169.    
  170.     return 0;
  171.    
  172.    
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement