3814 - Arie Patrulater Inscriptibil: Difference between revisions
Pagină nouă: == Cerinţa == Se dau lungimile laturilor patrulaterului inscriptibil '''ABCD'''. Aflati aria acestuia. == Date de intrare == Programul citește de la tastatură lungimile laturilor '''AB, BC, CD, AD'''. == Date de ieşire == Programul va afișa pe ecran aria patrulaterului, cu '''3''' zecimale exacte. == Restricții și precizări == * 1 ⩽ AB, BC, CD, AD ⩽ 1000 == Exemplu == ; Intrare ; 13 14 3 13 ; Ieșire ; 100.123 == Rezolvare == <syntaxhighlight lang="python" lin... |
No edit summary |
||
Line 7: | Line 7: | ||
== Restricții și precizări == | == Restricții și precizări == | ||
* 1 ⩽ AB, BC, CD, AD ⩽ 1000 | * 1 ⩽ AB, BC, CD, AD ⩽ 1000 | ||
== | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
: 13 | |||
: 14 | |||
: 3 | |||
: 13 | |||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund restricțiilor impuse. | |||
: 100.123 | |||
== Exemplul 2 == | |||
; Intrare | |||
: 13 | |||
: 14 | |||
: 3 | |||
: n | |||
; Ieșire | |||
: Datele de intrare nu corespund restricțiilor impuse. | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def calculeaza_radical(n): | |||
def | """Calculează rădăcina pătrată a unui număr.""" | ||
# ridicăm numărul la puterea 0.5 pentru a calcula rădăcina pătrată | |||
return n ** 0.5 | return n ** 0.5 | ||
def | |||
def valideaza_date(l_1, l_2, l_3, l_4): | |||
"""Verifică dacă datele de intrare sunt valide.""" | |||
try: | |||
# încercăm să convertim datele de intrare la float | |||
l_1 = float(l_1) | |||
l_2 = float(l_2) | |||
l_3 = float(l_3) | |||
l_4 = float(l_4) | |||
# dacă conversia a reușit, afișăm un mesaj de succes | |||
print("Datele de intrare corespund restricțiilor impuse.") | |||
return l_1, l_2, l_3, l_4 | |||
except ValueError: | |||
# dacă conversia a eșuat, afișăm un mesaj de eroare | |||
print("Datele de intrare nu corespund restricțiilor impuse.") | |||
return None | |||
def calculeaza_arie_perimetru(l_1, l_2, l_3, l_4): | |||
"""Calculează aria și perimetrul.""" | |||
# Semiperimetrul | # Semiperimetrul | ||
s_perimetru = ( | s_perimetru = (l_1 + l_2 + l_3 + l_4) / 2 | ||
# Aria patrulaterului | # Aria patrulaterului | ||
aria = | aria = calculeaza_radical((s_perimetru - l_1) * (s_perimetru - l_2) * | ||
(s_perimetru - l_3) * (s_perimetru - l_4)) | |||
# Rotunjim suma | # Rotunjim suma obținută la 3 zecimale | ||
return round(aria, 3) | return round(aria, 3) | ||
# | |||
# Testăm problema | |||
if __name__ == "__main__": | if __name__ == "__main__": | ||
# citim datele de intrare de la utilizator | |||
lat_1 = input() | |||
lat_2 = input() | |||
lat_3 = input() | |||
lat_4 = input() | |||
# validăm datele de intrare | |||
date = valideaza_date(lat_1, lat_2, lat_3, lat_4) | |||
# dacă datele sunt valide, calculăm aria și perimetrul | |||
if date is not None: | |||
print(calculeaza_arie_perimetru(*date)) | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 14:11, 9 November 2023
Cerinţa
Se dau lungimile laturilor patrulaterului inscriptibil ABCD. Aflati aria acestuia.
Date de intrare
Programul citește de la tastatură lungimile laturilor AB, BC, CD, AD.
Date de ieşire
Programul va afișa pe ecran aria patrulaterului, cu 3 zecimale exacte.
Restricții și precizări
- 1 ⩽ AB, BC, CD, AD ⩽ 1000
Exemplul 1
- Intrare
- 13
- 14
- 3
- 13
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 100.123
Exemplul 2
- Intrare
- 13
- 14
- 3
- n
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line> def calculeaza_radical(n):
"""Calculează rădăcina pătrată a unui număr.""" # ridicăm numărul la puterea 0.5 pentru a calcula rădăcina pătrată return n ** 0.5
def valideaza_date(l_1, l_2, l_3, l_4):
"""Verifică dacă datele de intrare sunt valide.""" try: # încercăm să convertim datele de intrare la float l_1 = float(l_1) l_2 = float(l_2) l_3 = float(l_3) l_4 = float(l_4) # dacă conversia a reușit, afișăm un mesaj de succes print("Datele de intrare corespund restricțiilor impuse.") return l_1, l_2, l_3, l_4 except ValueError: # dacă conversia a eșuat, afișăm un mesaj de eroare print("Datele de intrare nu corespund restricțiilor impuse.") return None
def calculeaza_arie_perimetru(l_1, l_2, l_3, l_4):
"""Calculează aria și perimetrul.""" # 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)
- Testăm problema
if __name__ == "__main__":
# citim datele de intrare de la utilizator lat_1 = input() lat_2 = input() lat_3 = input() lat_4 = input() # validăm datele de intrare date = valideaza_date(lat_1, lat_2, lat_3, lat_4) # dacă datele sunt valide, calculăm aria și perimetrul if date is not None: print(calculeaza_arie_perimetru(*date))
</syntaxhighlight>