0923 - Fractii Max: Difference between revisions
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 | ||
== | == 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>
- 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>