Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Main.cpp
- #include <iostream>
- #include "Razlomak.h"
- int main() {
- int b1, i1, b2, i2;
- int izbor = 0;
- bool zelimIzlaz = false;
- bool uneseneVrednosti;
- Razlomak raz1, raz2;
- while(!zelimIzlaz) {
- std::cout << "Unesi brojilac prvog razlomka: " << std::endl;
- while(!(std::cin >> b1)) {
- std::cout << "Must be valid number" << std::endl;
- std::cin.clear();
- std::cin.ignore(100, '\n');
- }
- std::cout << "Unesi imenilac prvog razlomka: " << std::endl;
- while(!(std::cin >> i1)) {
- std::cout << "Must be valid number" << std::endl;
- std::cin.clear();
- std::cin.ignore(100, '\n');
- }
- std::cout << "Unesi brojilac drugog razlomka: " << std::endl;
- while(!(std::cin >> b2)) {
- std::cout << "Must be valid number" << std::endl;
- std::cin.clear();
- std::cin.ignore(100, '\n');
- }
- std::cout << "Unesi imenilac drugog razlomka: " << std::endl;
- while(!(std::cin >> i2)) {
- std::cout << "Must be valid number" << std::endl;
- std::cin.clear();
- std::cin.ignore(100, '\n');
- }
- Razlomak r1(b1, i1), r2(b2, i2);
- uneseneVrednosti = true;
- while(uneseneVrednosti) {
- std::cout << "Menu:" << std::endl;
- std::cout << "1. sabiranje dva razlomaka" <<std::endl;
- std::cout << "2. oduzimanje dva razlomaka" <<std::endl;
- std::cout << "3. mnozenje dva razlomaka" <<std::endl;
- std::cout << "4. deljenje dva razlomaka" <<std::endl;
- std::cout << "5. skrati razlomak" <<std::endl;
- std::cout << "6. mnozi jedan razlomak brojem" <<std::endl; // od
- std::cout << "7. deli razlomak brojem" <<std::endl;
- std::cout << "8. dodaj brojeve na razlomak" <<std::endl;
- std::cout << "8. oduzmi brojeve od razlomka" <<std::endl;
- std::cout << "9. Unesi nove vrednosti razlomaka" << std::endl;
- std::cout << "10. Izlaz iz programa" << std::endl;
- std::cout << "Unesite broj sa menu-a: ";
- std::cin >> izbor;
- switch(izbor) {
- case 1: {
- Razlomak rez;
- rez = r1 + r2;
- rez.ispis();
- break;
- }
- case 2: {
- Razlomak rez;
- rez = r1 - r2;
- rez.ispis();
- break;
- }
- case 3: {
- Razlomak rez;
- rez = r1 * r2;
- rez.ispis();
- break;
- }
- case 4: {
- Razlomak rez;
- rez = r1 / r2;
- rez.ispis();
- break;
- }
- case 5: {
- int b, i;
- std::cout << "Unesi brojilac razlomka: " << std::endl;
- while(!(std::cin >> b)) {
- std::cout << "Must be valid number" << std::endl;
- std::cin.clear();
- std::cin.ignore(100, '\n');
- }
- std::cout << "Unesi imenilac razlomka: " << std::endl;
- while(!(std::cin >> i)) {
- std::cout << "Must be valid number" << std::endl;
- std::cin.clear();
- std::cin.ignore(100, '\n');
- }
- Razlomak r(b, i);
- r.skrati();
- r.ispis();
- break;
- }
- case 6: {
- uneseneVrednosti = false;
- break;
- }
- case 7: {
- uneseneVrednosti = false;
- zelimIzlaz = true;
- break;
- }
- }
- }
- }
- }
- Razlomak.h
- #include <iostream>
- class Razlomak {
- private:
- int brojilac;
- int imenilac;
- public:
- Razlomak(int, int);
- // getters
- int getBrojilac() const {
- return brojilac;
- }
- int getImenilac() const {
- return imenilac;
- }
- // friends
- friend Razlomak operator+(Razlomak, Razlomak);
- friend Razlomak operator-(Razlomak, Razlomak);
- friend Razlomak operator*(Razlomak, Razlomak);
- friend Razlomak operator/(Razlomak, Razlomak);
- // ispis razlomka
- void ispis() {
- std::cout << "Vrednost razlomka: " << brojilac << "/" << imenilac << std::endl;
- }
- // najmanji zajednicki sadrzalac
- static int nzs(int a, int b) {
- double t;
- if(a < b) {
- t = b;
- b = a;
- a = t;
- }
- while(b > 0) {
- t = b;
- b = a % b;
- a = t;
- }
- return a;
- }
- // skrati razlomak
- void skrati() {
- int n = Razlomak::nzs(brojilac, imenilac);
- brojilac /= n;
- imenilac /= n;
- }
- };
- Razlomak::Razlomak(int b=0, int i=0): brojilac(b), imenilac(i) {
- }
- Razlomak operator+ (Razlomak raz1, Razlomak raz2) {
- Razlomak rez;
- rez.brojilac = raz1.brojilac * raz2.imenilac + raz2.brojilac * raz1.imenilac;
- rez.imenilac = raz1.imenilac * raz2.imenilac;
- return rez;
- }
- Razlomak operator- (Razlomak raz1, Razlomak raz2) {
- Razlomak rez;
- rez.brojilac = raz1.brojilac * raz2.imenilac - raz2.brojilac * raz1.imenilac;
- rez.imenilac = raz1.imenilac * raz2.imenilac;
- return rez;
- }
- Razlomak operator* (Razlomak raz1, Razlomak raz2) {
- Razlomak rez;
- rez.brojilac = raz1.brojilac * raz2.brojilac;
- rez.imenilac = raz1.imenilac * raz2.imenilac;
- return rez;
- }
- Razlomak operator/ (Razlomak raz1, Razlomak raz2) {
- Razlomak rez;
- rez.brojilac = raz1.brojilac * raz2.imenilac;
- rez.imenilac = raz1.imenilac * raz2.brojilac;
- return rez;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement