0923 - Fractii Max: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
Fără descriere a modificării
Linia 7: Linia 7:
== Restricții și precizări ==
== Restricții și precizări ==
* 1 ⩽ a, b, c, d ⩽ 10000
* 1 ⩽ a, b, c, d ⩽ 10000
== Exemplu ==
== Exemplul 1 ==
; Intrare
; Intrare
: 7  
: 7  
Linia 16: Linia 16:
: Datele de intrare corespund restricțiilor impuse.
: Datele de intrare corespund restricțiilor impuse.
: 4 3
: 4 3
<br>
== Exemplul 2 ==
== Exemplul 2 ==
; Intrare
; Intrare
Linia 24: Linia 25:
; Ieșire
; Ieșire
: Datele introduse nu corespund restricțiilor impuse.
: Datele introduse nu corespund restricțiilor impuse.
<br>
== Explicație ==
== Explicație ==
Fracția maximă este '''24/18'''. Prin simplificare devine '''4/3'''.
Fracția maximă este '''24/18'''. Prin simplificare devine '''4/3'''.

Versiunea de la data 10 noiembrie 2023 19:15

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