0923 - Fractii Max

De la Universitas MediaWiki

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.")