Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.43 KB | None | 0 0
  1. Main.cpp
  2. #include <iostream>
  3.  
  4. #include "Razlomak.h"
  5.  
  6. int main() {
  7.     int b1, i1, b2, i2;
  8.    
  9.     int izbor = 0;
  10.    
  11.     bool zelimIzlaz = false;
  12.     bool uneseneVrednosti;
  13.    
  14.     Razlomak raz1, raz2;
  15.    
  16.     while(!zelimIzlaz) {
  17.         std::cout << "Unesi brojilac prvog razlomka: " << std::endl;
  18.         while(!(std::cin >> b1)) {
  19.         std::cout << "Must be valid number" << std::endl;
  20.         std::cin.clear();  
  21.         std::cin.ignore(100, '\n');
  22.         }  
  23.        
  24.         std::cout << "Unesi imenilac prvog razlomka: " << std::endl;
  25.         while(!(std::cin >> i1)) {
  26.         std::cout << "Must be valid number" << std::endl;
  27.         std::cin.clear();  
  28.         std::cin.ignore(100, '\n');
  29.         }
  30.        
  31.         std::cout << "Unesi brojilac drugog razlomka: " << std::endl;
  32.         while(!(std::cin >> b2)) {
  33.         std::cout << "Must be valid number" << std::endl;
  34.         std::cin.clear();  
  35.         std::cin.ignore(100, '\n');
  36.         }
  37.        
  38.         std::cout << "Unesi imenilac drugog razlomka: " << std::endl;
  39.         while(!(std::cin >> i2)) {
  40.         std::cout << "Must be valid number" << std::endl;
  41.         std::cin.clear();  
  42.         std::cin.ignore(100, '\n');
  43.         }
  44.        
  45.         Razlomak r1(b1, i1), r2(b2, i2);
  46.        
  47.         uneseneVrednosti = true;
  48.         while(uneseneVrednosti) {
  49.        
  50.             std::cout << "Menu:" << std::endl;
  51.             std::cout << "1. sabiranje dva razlomaka" <<std::endl;
  52.             std::cout << "2. oduzimanje dva razlomaka" <<std::endl;
  53.             std::cout << "3. mnozenje dva razlomaka" <<std::endl;
  54.             std::cout << "4. deljenje dva razlomaka" <<std::endl;
  55.             std::cout << "5. skrati razlomak" <<std::endl;
  56.             std::cout << "6. mnozi jedan razlomak brojem" <<std::endl; // od
  57.             std::cout << "7. deli razlomak brojem" <<std::endl;
  58.             std::cout << "8. dodaj brojeve na razlomak" <<std::endl;
  59.             std::cout << "8. oduzmi brojeve od razlomka" <<std::endl;
  60.             std::cout << "9. Unesi nove vrednosti razlomaka" << std::endl;
  61.             std::cout << "10. Izlaz iz programa" << std::endl;
  62.            
  63.             std::cout << "Unesite broj sa menu-a: ";
  64.             std::cin >> izbor;
  65.            
  66.             switch(izbor) {
  67.                 case 1: {
  68.                     Razlomak rez;
  69.                     rez = r1 + r2;
  70.                     rez.ispis();
  71.                     break;
  72.                 }
  73.                 case 2: {
  74.                     Razlomak rez;
  75.                     rez = r1 - r2;
  76.                     rez.ispis();
  77.                     break;
  78.                 }
  79.                 case 3: {
  80.                     Razlomak rez;
  81.                     rez = r1 * r2;
  82.                     rez.ispis();
  83.                     break;
  84.                 }
  85.                 case 4: {
  86.                     Razlomak rez;
  87.                     rez = r1 / r2;
  88.                     rez.ispis();
  89.                     break;
  90.                 }
  91.                 case 5: {
  92.                     int b, i;
  93.                    
  94.                     std::cout << "Unesi brojilac razlomka: " << std::endl;
  95.                     while(!(std::cin >> b)) {
  96.                     std::cout << "Must be valid number" << std::endl;
  97.                     std::cin.clear();  
  98.                     std::cin.ignore(100, '\n');
  99.                     }  
  100.                    
  101.                     std::cout << "Unesi imenilac razlomka: " << std::endl;
  102.                     while(!(std::cin >> i)) {
  103.                     std::cout << "Must be valid number" << std::endl;
  104.                     std::cin.clear();  
  105.                     std::cin.ignore(100, '\n');
  106.                     }
  107.                    
  108.                     Razlomak r(b, i);
  109.                     r.skrati();
  110.                     r.ispis();
  111.                     break;
  112.                 }
  113.                 case 6: {
  114.                     uneseneVrednosti = false;
  115.                     break;
  116.                 }
  117.                 case 7: {
  118.                     uneseneVrednosti = false;
  119.                     zelimIzlaz = true;            
  120.                     break;
  121.                 }  
  122.             }
  123.         }
  124.     }
  125. }
  126.  
  127.  
  128. Razlomak.h
  129. #include <iostream>
  130.  
  131. class Razlomak {
  132.     private:
  133.         int brojilac;
  134.         int imenilac;
  135.     public:
  136.         Razlomak(int, int);
  137.     // getters
  138.     int getBrojilac() const {
  139.         return brojilac;
  140.     }
  141.     int getImenilac() const {
  142.         return imenilac;
  143.     }
  144.     // friends
  145.     friend Razlomak operator+(Razlomak, Razlomak);
  146.     friend Razlomak operator-(Razlomak, Razlomak);
  147.     friend Razlomak operator*(Razlomak, Razlomak);
  148.     friend Razlomak operator/(Razlomak, Razlomak);
  149.     // ispis razlomka
  150.     void ispis() {
  151.         std::cout << "Vrednost razlomka: " << brojilac << "/" << imenilac << std::endl;
  152.     }
  153.     // najmanji zajednicki sadrzalac
  154.     static int nzs(int a, int b) {
  155.         double t;
  156.         if(a < b) {
  157.             t = b;
  158.             b = a;
  159.             a = t;
  160.         }
  161.         while(b > 0) {
  162.             t = b;
  163.             b = a % b;
  164.             a = t;
  165.         }
  166.         return a;
  167.     }
  168.     // skrati razlomak
  169.     void skrati() {
  170.         int n = Razlomak::nzs(brojilac, imenilac);
  171.         brojilac /= n;
  172.         imenilac /= n;
  173.     }
  174. };
  175.  
  176. Razlomak::Razlomak(int b=0, int i=0): brojilac(b), imenilac(i) {
  177. }
  178.  
  179. Razlomak operator+ (Razlomak raz1, Razlomak raz2) {
  180.     Razlomak rez;
  181.     rez.brojilac = raz1.brojilac * raz2.imenilac + raz2.brojilac * raz1.imenilac;
  182.     rez.imenilac = raz1.imenilac * raz2.imenilac;
  183.     return rez;
  184. }
  185. Razlomak operator- (Razlomak raz1, Razlomak raz2) {
  186.     Razlomak rez;
  187.     rez.brojilac = raz1.brojilac * raz2.imenilac - raz2.brojilac * raz1.imenilac;
  188.     rez.imenilac = raz1.imenilac * raz2.imenilac;
  189.     return rez;
  190. }
  191. Razlomak operator* (Razlomak raz1, Razlomak raz2) {
  192.     Razlomak rez;
  193.     rez.brojilac = raz1.brojilac * raz2.brojilac;
  194.     rez.imenilac = raz1.imenilac * raz2.imenilac;
  195.     return rez;
  196. }
  197. Razlomak operator/ (Razlomak raz1, Razlomak raz2) {
  198.     Razlomak rez;
  199.     rez.brojilac = raz1.brojilac * raz2.imenilac;
  200.     rez.imenilac = raz1.imenilac * raz2.brojilac;
  201.     return rez;
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement