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