0923 - Fractii Max: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
Line 7: Line 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  
Line 16: Line 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
Line 24: Line 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'''.

Revision as of 19:15, 10 November 2023

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

<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>