Napisz funkcję porownaj(int l1, int m1, int l2, int m2), której wynikiem dla danych dwóch liczb l1/m1, l2/m2 będzie 0 – gdy liczby są równe, 1 – gdy pierwsza liczba jest większa od drugiej, i 2 – gdy druga liczba jest większa od pierwszej. Sprawdź działanie funkcji dla podanych poniżej parametrów.

Wynikiem funkcji porownaj(1, 2, 3, 4) jest 2.
Wynikiem funkcji porownaj(100, 100, 5, 5) jest 0.


Napisz Funkcję Porownajint L1 Int M1 Int L2 Int M2 Której Wynikiem Dla Danych Dwóch Liczb L1m1 L2m2 Będzie 0 Gdy Liczby Są Równe 1 Gdy Pierwsza Liczba Jest Więk class=

Odpowiedź :

Odpowiedź:

Funkcja mogła by wyglądać w następujący sposób

int porownaj(int l1, int m1, int l2, int m2)

{

   long long int u1, u2;

   u1 = l1 * m2;

   u2 = l2 * m1;

   if(u1 == u2)

       return 0;

   else if(u1 > u2)

       return 1;

   else

       return 2;

}

Nie możemy porównywać wyników dzielenia l1/m1 i l2/m2 ponieważ w wyniku zaokrągleń możemy otrzymać błędne wyniki porównania. Należy oba ułamki sprowadzić do wspólnego mianownika i porównać same liczniki.

u1 i u2 są w long long int aby nie przekroczyć zakresów przy mnożeniu l1*m2 oraz l2*m1

Wyjaśnienie: