0923 - Fractii Max

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerinţa

Se dau 4 numere naturale a b c d, reprezentând fracţiile a/b şi c/d. Determinați și afișați cea mai mare dintre cele două fracții.

Date de intrare

Programul citește de la tastatură numerele a b c d.

Date de ieşire

Programul afișează pe ecran numerele m n, separate prin exact un spațiu, reprezentând numărătorul şi numitorul fracției maxime, adusă la forma ireductibilă.

Restricții și precizări

  • 1 ⩽ a, b, c, d ⩽ 10000

Exemplul 1

Intrare
7 14 24 18
Ieșire
Datele de intrare corespund restricțiilor impuse.
4 3


Exemplul 2

Intrare
4 9 15 100000
Ieșire
Datele introduse nu corespund restricțiilor impuse.


Explicație

Fracția maximă este 24/18. Prin simplificare devine 4/3.

Rezolvare

# 0923  Fractii Max
def verificare(valoare_numar):
    # Verificăm dacă numărul este între 1 și 10000
    if 1 <= valoare_numar <= 10000:
        return valoare_numar    # Dacă este, returnăm numărul
    else:
        raise ValueError    # Dacă nu este, ridicăm o excepție


def cmmdc(valoare1, valoare2):
    # Folosim algoritmul lui Euclid pentru a găsi cmmdc
    while valoare2:
        valoare1, valoare2 = valoare2, valoare1 % valoare2
    return valoare1    # Returnăm cmmdc


if __name__ == "__main__":
    try:
        # Citim numerele de la utilizator
        a = input("Introduceți numărătorul primei fracții: ")
        b = input("Introduceți numitorul primei fracții: ")
        c = input("Introduceți numărătorul celei de-a doua fracții: ")
        d = input("Introduceți numitorul celei de-a doua fracții: ")

        # Validăm numerele folosind funcția de verificare
        a = verificare(int(a))
        b = verificare(int(b))
        c = verificare(int(c))
        d = verificare(int(d))
        print("Datele de intrare corespund restricțiilor impuse.")

        # Calculăm valorile fracțiilor
        frac1 = a / b
        frac2 = c / d

        # Verificăm care fracție este mai mare și o simplificăm
        if frac1 > frac2:
            cmmdc_val = cmmdc(a, b)    # Calculăm cmmdc pentru a și b
            print(a // cmmdc_val, b // cmmdc_val)    # Afișăm fracția simplificată
        else:
            cmmdc_val = cmmdc(c, d)    # Calculăm cmmdc pentru c și d
            print(c // cmmdc_val, d // cmmdc_val)    # Afișăm fracția simplificată
    except ValueError:
        print("Datele introduse nu corespund restricțiilor impuse.")