Napisz program w C++ wykonujący podstawowe operacje arytmetyczne na ułamkach zwykłych, w tym dodawanie,

odejmowanie, mnożenie i dzielenie.

• użytkownik wprowadza z klawiatury liczniki i mianowniki dwóch ułamków.

• wynik powinien być wyświetlony w postaci skróconej z wyłączeniem części

całkowitej.

• wykorzystaj algorytm Euklidesa.



Zastosuj w poprzednim programie funkcje.

W programie w C++ wykorzystaj różne sposoby przekazywania parametrów.

Z góry dziękuje : >


Odpowiedź :

Odpowiedź:

#include <iostream>

#include <algorithm>

int NWD(int a, int b) { //namniejsza wspolna wielokrotnosc

   while (b != 0) {

       int tmp = b;

       b = a % b;

       a = tmp;

   }

   return a;

}

int NWW(const int a, const int b) { //najwiekszy wspolny dzielnik

   return a / NWD(a, b) * b;

}

int dodawanieLicznik(int licznik1, int mianownik1, int licznik2, int mianownik2) {

   int wspolnyMianownik = NWW(mianownik1, mianownik2);

   licznik1 = licznik1 * mianownik2;

   licznik2 = licznik2 * mianownik1;

   return (licznik1 + licznik2) / NWD(licznik1 + licznik2, wspolnyMianownik);

}

int dodawanieMianownik(int licznik1, int mianownik1, int licznik2, int mianownik2) {

   int wspolnyMianownik = NWW(mianownik1, mianownik2);

   licznik1 = licznik1 * mianownik2;

   licznik2 = licznik2 * mianownik1;

   return wspolnyMianownik / NWD(licznik1 + licznik2, wspolnyMianownik);

}

int mnozenieLicznik(int licznik1, int mianownik1, int licznik2, int mianownik2) {

   int wspolnyMianownik = mianownik1 * mianownik2;

   return (licznik1 * licznik2) / NWD(licznik1 * licznik2, wspolnyMianownik);

}

int mnozenieMianownik(int licznik1, int mianownik1, int licznik2, int mianownik2) {

   int wspolnyMianownik = mianownik1 * mianownik2;

   return wspolnyMianownik / NWD(licznik1 * licznik2, wspolnyMianownik);

}

int odejmowanieLicznik(int licznik1, int mianownik1, int licznik2, int mianownik2) {

   int wspolnyMianownik = NWW(mianownik1, mianownik2);

   licznik1 = licznik1 * mianownik2;

   licznik2 = licznik2 * mianownik1;

   return (licznik1 - licznik2) / NWD(licznik1 - licznik2, wspolnyMianownik);

}

int odejmowanieMianownik(int licznik1, int mianownik1, int licznik2, int mianownik2) {

   int wspolnyMianownik = NWW(mianownik1, mianownik2);

   licznik1 = licznik1 * mianownik2;

   licznik2 = licznik2 * mianownik1;

   return wspolnyMianownik / NWD(licznik1 - licznik2, wspolnyMianownik);

}

int dzielenieLicznik(int licznik1, int mianownik1, int licznik2, int mianownik2) {

   std::swap(licznik2, mianownik2);

   int wspolnyMianownik = mianownik1 * mianownik2;

   return (licznik1 * licznik2) / NWD(licznik1 * licznik2, wspolnyMianownik);

}

int dzielenieMianownik(int licznik1, int mianownik1, int licznik2, int mianownik2) {

   std::swap(licznik2, mianownik2);

   int wspolnyMianownik = mianownik1 * mianownik2;

   return wspolnyMianownik / NWD(licznik1 * licznik2, wspolnyMianownik);

}

int main() {

   int licznik1, mianownik1, licznik2, mianownik2;

   std::cin >> licznik1 >> mianownik1 >> licznik2 >> mianownik2;

   std::cout << "Dodawanie:\n";

   std::cout << dodawanieLicznik(licznik1, mianownik1, licznik2, mianownik2) << std::endl;

   std::cout << dodawanieMianownik(licznik1, mianownik1, licznik2, mianownik2) << std::endl;

   

   return 0;

}

Wyjaśnienie:

Bez wyłączania całości, bo zrobiłem to tak, że za dużo roboty by było z tym