- #include <iostream>
- #include <conio.h>
- #include <cstdio>
- #include <cmath>
- using namespace std;
- class ulamek {
- private:
- int licznik;
- int mianownik;
- void skracaj();
- public:
- ulamek() { // definicja pierwszego konstruktora
- licznik = 1;
- mianownik = 1;
- }
- ulamek (int l, int m); // deklaracja drugiego kontruktora
- void wypisz () {
- skracaj();
- cout << licznik << "/" << mianownik;
- }
- friend ulamek pomnoz (ulamek, ulamek); // deklaracja przyjazni
- friend ulamek suma (ulamek, ulamek);
- friend ulamek odejmowanie (ulamek, ulamek);
- friend ulamek dzielenie (ulamek, ulamek);
- }; // koniec definicji klasy
- void ulamek::skracaj () {
- int a = abs (licznik);
- int b = abs (mianownik);
- while (a != b)
- if (a>b)
- a = a-b;
- else
- b = b-a;
- licznik = licznik/a;
- mianownik = mianownik/a;
- }
- ulamek::ulamek (int l, int m) {
- licznik = l;
- if (m!=0)
- mianownik = m;
- else {
- cout << "Mianownik nie moze miec wartosci 0";
- getchar ();
- exit (1);
- }
- }
- ulamek pomnoz (ulamek u1, ulamek u2) { // funkcja mnozaca ulamki
- ulamek wynikMnoz;
- wynikMnoz.licznik = u1.licznik * u2.licznik;
- wynikMnoz.mianownik = u1.mianownik * u2.mianownik;
- return wynikMnoz;
- } // wynikiem funkcji jest obiekt klasy ułamek
- ulamek suma (ulamek u1, ulamek u2) { // funkcja mnozaca ulamki
- ulamek wynikSuma;
- wynikSuma.licznik = (u1.licznik * u2.mianownik) + (u2.licznik * u1.mianownik);
- wynikSuma.mianownik = u1.mianownik * u2.mianownik;
- return wynikSuma;
- }
- ulamek odejmowanie (ulamek u1, ulamek u2) { // funkcja mnozaca ulamki
- ulamek wynikOdej;
- wynikOdej.licznik = (u1.licznik * u2.mianownik) - (u2.licznik * u1.mianownik);
- wynikOdej.mianownik = u1.mianownik * u2.mianownik;
- return wynikOdej;
- }
- ulamek dzielenie (ulamek u1, ulamek u2) { // funkcja mnozaca ulamki
- ulamek wynikDziel;
- wynikDziel.licznik = u1.licznik * u2.mianownik;
- wynikDziel.mianownik = u1.mianownik * u2.licznik;
- return wynikDziel;
- }
- int main () {
- int l, m, n;
- cout<< "Podaj 1. licznik: ";
- cin >> l;
- cout<< "Podaj 1. mianownik: ";
- cin >> m;
- ulamek a (l, m);
- cout<< endl << "Podaj 2. licznik: ";
- cin >> l;
- cout << "Podaj 2. mianownik: ";
- cin >> m;
- ulamek b (l, m);
- cout << endl << "1. ulamek to: ";
- a.wypisz();
- cout<< endl << "2. ulamek to: ";
- b.wypisz();
- cout << endl << "Jakie działanie chcesz wykonać:\n1.Dodawanie\n2.Odejmowanie\n3.Mnozenie\n4.Dzielenie\n";
- cin >> n;
- switch(n)
- {
- case 1:
- {
- cout<< endl << "Suma ";
- a.wypisz();
- cout << " i ";
- b.wypisz();
- cout<< " wynosi ";
- suma(a, b).wypisz();
- break;
- }
- case 2:
- {
- cout << endl << "Odejmowanie ";
- a.wypisz();
- cout << " i ";
- b.wypisz();
- cout << " wynosi ";
- odejmowanie(a, b).wypisz();
- break;
- }
- case 3:
- {
- cout<< endl << "Iloczyn ";
- a.wypisz();
- cout<< " i ";
- b.wypisz();
- cout<< " wynosi ";
- pomnoz(a, b).wypisz();
- break;
- }
- case 4:
- {
- cout << endl << "Dzielenie ";
- a.wypisz();
- cout << " i ";
- b.wypisz();
- cout<< " wynosi ";
- dzielenie(a, b).wypisz();
- break;
- }
- }
- getch ();
- }