Advertisement
rozman50

Untitled

Nov 6th, 2018
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.78 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <math.h>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. int skupniImenovalec(int a, int b) {
  9.     // če sta imenovalca enaka, ga vrni
  10.     if (a == b) { return a; }
  11.     int vecjeStevilo = max(a, b);
  12.     for (int i = vecjeStevilo; ; i++)
  13.     {
  14.         if (i % a == 0 && i % b == 0) {
  15.             return i;
  16.         }
  17.     }
  18. }
  19.  
  20. int prirediStevec (int a, int b, int skupniImenovalec) {
  21.     return a * (skupniImenovalec / b);
  22. }
  23.  
  24. int vsotaUlomka(int a, int c) {
  25.     return a + c;
  26. }
  27. int razlikaUlomka(int a, int c) {
  28.     return a - c;
  29. }
  30. int mnozenje(int a, int b) {
  31.     return a * b;
  32. }
  33.  
  34. int krajsanje(int a, int b) {
  35.     int vecjeStevilo = max(a, b);
  36.     for (int i = vecjeStevilo; i > 0; i--) {
  37.         if (a % i == 0 && b % i == 0)
  38.         {
  39.             return i;
  40.         }
  41.     }
  42. }
  43.  
  44. int main()
  45. {
  46.  
  47.     int a, b, c, d;
  48.     char racunskiOperator;
  49.     cout << "Vnesi prvi ulomek" << endl;
  50.     cin >> a;
  51.     cout << '-' << endl;
  52.     cin >> b;
  53.     cout << endl;
  54.  
  55.     cout << "Vnesi drugi ulomek" << endl;
  56.     cin >> c;
  57.     cout << '-' << endl;
  58.     cin >> d;
  59.  
  60.     cout << "Vnesi operator (+, -, /, *)" << endl;
  61.     cin >> racunskiOperator;
  62.  
  63.     switch (racunskiOperator) {
  64.     case '+': {
  65.         // izračunaš skupni imenovalec
  66.         int imenovalec = skupniImenovalec(b, d);
  67.  
  68.         // po novem imenovalcu izračunaš nove števce
  69.         int prirejenA = prirediStevec(a, b, imenovalec);
  70.         int prirejenC = prirediStevec(c, d, imenovalec);
  71.  
  72.         // sešteješ števce
  73.         int vsota = vsotaUlomka(prirejenA, prirejenC);
  74.  
  75.         // najdeš skupni okrajševalec
  76.         int skupniOkrajsevalec = krajsanje(vsota, imenovalec);
  77.  
  78.         // pokrajšaš stevec, imenovalec z okrajševalcem in dobiš nove okrajšane vrednosti
  79.         int okrajsanaVsotaStevec = (vsota / skupniOkrajsevalec);
  80.         int okrajsanaVsotaImenovalec = (imenovalec / skupniOkrajsevalec);
  81.  
  82.         cout << "rezultat: " << okrajsanaVsotaStevec << " / " << okrajsanaVsotaImenovalec << endl;
  83.         break;
  84.     }
  85.     case '-': {
  86.         // izračunaš skupni imenovalec
  87.         int imenovalec = skupniImenovalec(b, d);
  88.  
  89.         // po novem imenovalcu izračunaš nove števce
  90.         int prirejenA = prirediStevec(a, b, imenovalec);
  91.         int prirejenC = prirediStevec(c, d, imenovalec);
  92.  
  93.         // razlika števcev
  94.         int razlika = razlikaUlomka(prirejenA, prirejenC);
  95.        
  96.         // najdeš skupni okrajševalec
  97.         int skupniOkrajsevalec = krajsanje(razlika, imenovalec);
  98.  
  99.         // pokrajšaš stevec, imenovalec z okrajševalcem in dobiš nove okrajšane vrednosti
  100.         int okrajsanaRazlikaStevec = (razlika / skupniOkrajsevalec);
  101.         int okrajsanaRazlikaImenovalec = (imenovalec / skupniOkrajsevalec);
  102.  
  103.         cout << "rezultat: " << okrajsanaRazlikaStevec << " / " << okrajsanaRazlikaImenovalec << endl;
  104.         break;
  105.     }
  106.     case '*': {
  107.         // izračunaš produkt števca in imenovalca
  108.         int produktStevca = mnozenje(a, c);
  109.         int produktImenovalca = mnozenje(b, d);
  110.  
  111.         // izračunaš skupni okrajševalec
  112.         int produktSkupniOkrajsevalec = krajsanje(produktStevca, produktImenovalca);
  113.  
  114.         // okrajšaš stevec in imenovalec
  115.         int okrajsanProduktStevec = (produktStevca / produktSkupniOkrajsevalec);
  116.         int okrajsanProduktImenovalec = (produktImenovalca / produktSkupniOkrajsevalec);
  117.  
  118.         cout << "rezultat: " << okrajsanProduktStevec << " / " << okrajsanProduktImenovalec << endl;
  119.         break;
  120.     }
  121.     case '/': {
  122.         // izračunaš produkt števca in imenovalca, a*d, b*c
  123.         int kolicnikStevca = mnozenje(a, d);
  124.         int kolicnikImenovalca = mnozenje(b, c);
  125.  
  126.         // izračunaš skupni okrajševalec
  127.         int razlikaSkupniOkrajsevalec = krajsanje(kolicnikStevca, kolicnikImenovalca);
  128.  
  129.         // okrajšeš števec in imenovalec
  130.         int okrajsanRazlikaStevec = (kolicnikStevca / razlikaSkupniOkrajsevalec);
  131.         int okrajsanRazlikaImenovalec = (kolicnikImenovalca / razlikaSkupniOkrajsevalec);
  132.  
  133.         cout << "Rezultat: " << okrajsanRazlikaStevec << " / " << okrajsanRazlikaImenovalec << endl;
  134.         break;
  135.     }
  136.     default: {
  137.         break;
  138.     }
  139.     }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement