0923 - Fractii Max

From Bitnami MediaWiki
Revision as of 14:27, 18 November 2023 by Hotico Iulia Denisa (talk | contribs) (→‎Exemplul 2)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa[edit | edit source]

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[edit | edit source]

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

Date de ieşire[edit | edit source]

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[edit | edit source]

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

Exemplul 1[edit | edit source]

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


Exemplul 2[edit | edit source]

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


Explicație[edit | edit source]

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

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

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


</syntaxhighlight>