3814 - Arie Patrulater Inscriptibil: Difference between revisions
No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 16: | Line 16: | ||
: Datele introduse corespund restricțiilor impuse. | : Datele introduse corespund restricțiilor impuse. | ||
: 100.123 | : 100.123 | ||
<br> | |||
== Exemplul 2 == | == Exemplul 2 == | ||
; Intrare | ; Intrare | ||
Line 24: | Line 25: | ||
; Ieșire | ; Ieșire | ||
: Datele de intrare nu corespund restricțiilor impuse. | : Datele de intrare nu corespund restricțiilor impuse. | ||
<br> | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# 3814 Arie Patrulater Inscriptibil | |||
# Definim funcția de verificare a valorilor laturilor | |||
def verificare(l_1, l_2, l_3, l_4): | |||
# Verificăm dacă laturile respectă restricțiile problemei | |||
if 1 <= l_1 <= 1000 and 1 <= l_2 <= 1000 and 1 <= l_3 <= 1000 and 1 <= l_4 <= 1000: | |||
# Dacă valorile sunt valide, returnăm True | |||
return True | |||
else: | |||
# Dacă valorile nu sunt valide, ridicăm o excepție | |||
raise ValueError | |||
def calculeaza_radical(n): | def calculeaza_radical(n): | ||
return n ** 0.5 | return n ** 0.5 | ||
def calculeaza_arie_perimetru(l_1, l_2, l_3, l_4): | def calculeaza_arie_perimetru(l_1, l_2, l_3, l_4): | ||
# Semiperimetrul | # Semiperimetrul | ||
s_perimetru = (l_1 + l_2 + l_3 + l_4) / 2 | s_perimetru = (l_1 + l_2 + l_3 + l_4) / 2 | ||
Line 62: | Line 57: | ||
# | # Verificăm dacă acest script este rulat direct (nu este importat ca modul) | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
# | try: | ||
# Citim laturile de la utilizator | |||
latura_1 = float(input("Introduceti prima latura: ")) | |||
latura_2 = float(input("Introduceti a doua latura: ")) | |||
latura_3 = float(input("Introduceti a treia latura: ")) | |||
latura_4 = float(input("Introduceti a patra latura: ")) | |||
# | # Verificăm dacă datele introduse sunt valide | ||
if verificare(latura_1, latura_2, latura_3, latura_4): | |||
print( | # Dacă datele sunt valide, afișăm un mesaj de confirmare | ||
print("Datele introduse corespund restricțiilor impuse.") | |||
# Calculăm și afișăm aria | |||
print(calculeaza_arie_perimetru(latura_1, latura_2, latura_3, latura_4)) | |||
# Tratăm cazul în care datele introduse nu sunt valide | |||
except ValueError: | |||
# Afișăm un mesaj de eroare | |||
print("Datele introduse nu corespund restricțiilor impuse.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 19:11, 10 November 2023
Cerinţa[edit | edit source]
Se dau lungimile laturilor patrulaterului inscriptibil ABCD. Aflati aria acestuia.
Date de intrare[edit | edit source]
Programul citește de la tastatură lungimile laturilor AB, BC, CD, AD.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran aria patrulaterului, cu 3 zecimale exacte.
Restricții și precizări[edit | edit source]
- 1 ⩽ AB, BC, CD, AD ⩽ 1000
Exemplul 1[edit | edit source]
- Intrare
- 13
- 14
- 3
- 13
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 100.123
Exemplul 2[edit | edit source]
- Intrare
- 13
- 14
- 3
- n
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 3814 Arie Patrulater Inscriptibil
- Definim funcția de verificare a valorilor laturilor
def verificare(l_1, l_2, l_3, l_4):
# Verificăm dacă laturile respectă restricțiile problemei if 1 <= l_1 <= 1000 and 1 <= l_2 <= 1000 and 1 <= l_3 <= 1000 and 1 <= l_4 <= 1000: # Dacă valorile sunt valide, returnăm True return True else: # Dacă valorile nu sunt valide, ridicăm o excepție raise ValueError
def calculeaza_radical(n):
return n ** 0.5
def calculeaza_arie_perimetru(l_1, l_2, l_3, l_4):
# Semiperimetrul s_perimetru = (l_1 + l_2 + l_3 + l_4) / 2
# Aria patrulaterului aria = calculeaza_radical((s_perimetru - l_1) * (s_perimetru - l_2) * (s_perimetru - l_3) * (s_perimetru - l_4))
# Rotunjim suma obținută la 3 zecimale return round(aria, 3)
- Verificăm dacă acest script este rulat direct (nu este importat ca modul)
if __name__ == "__main__":
try: # Citim laturile de la utilizator latura_1 = float(input("Introduceti prima latura: ")) latura_2 = float(input("Introduceti a doua latura: ")) latura_3 = float(input("Introduceti a treia latura: ")) latura_4 = float(input("Introduceti a patra latura: "))
# Verificăm dacă datele introduse sunt valide if verificare(latura_1, latura_2, latura_3, latura_4): # Dacă datele sunt valide, afișăm un mesaj de confirmare print("Datele introduse corespund restricțiilor impuse.")
# Calculăm și afișăm aria print(calculeaza_arie_perimetru(latura_1, latura_2, latura_3, latura_4))
# Tratăm cazul în care datele introduse nu sunt valide except ValueError: # Afișăm un mesaj de eroare print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>