0923 - Fractii Max: Difference between revisions
Pagină nouă: == 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 preci... |
|||
| (3 intermediate revisions by 2 users not shown) | |||
| 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 14 24 18 | |||
; Ieșire | ; Ieșire | ||
Datele de intrare corespund restricțiilor impuse. | |||
4 3 | |||
<br> | |||
== Exemplul 2 == | |||
; Intrare | |||
4 9 15 100000 | |||
; Ieșire | |||
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'''. | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# | # 0923 Fractii Max | ||
def | def verificare(valoare_numar): | ||
while | # Verificăm dacă numărul este între 1 și 10000 | ||
if 1 <= valoare_numar <= 10000: | |||
return | 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 | ||
a | frac1 = a / b | ||
frac2 = c / d | |||
c | |||
d | |||
# | # Verificăm care fracție este mai mare și o simplificăm | ||
frac1 = a / b | 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> | </syntaxhighlight> | ||
Latest revision as of 14:27, 18 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>