3814 - Arie Patrulater Inscriptibil: Difference between revisions

From Bitnami MediaWiki
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 &les; AB, BC, CD, AD &les; 1000
* 1 &les; AB, BC, CD, AD &les; 1000
== Exemplu ==
== Exemplul 1 ==
; Intrare
; Intrare
; 13 14 3 13
: 13  
: 14  
: 3  
: 13
; Ieșire
; Ieșire
; 100.123
: 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>
# Construim radicalul
def calculeaza_radical(n):
def 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
     return n ** 0.5


def problema_3814(lat1, lat2, lat3, lat4):
 
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 = (lat1 + lat2 + lat3 + lat4) / 2
     s_perimetru = (l_1 + l_2 + l_3 + l_4) / 2


     # Aria patrulaterului
     # Aria patrulaterului
     aria = radical((s_perimetru - lat1) * (s_perimetru - lat2) * (s_perimetru - lat3) * (s_perimetru - lat4))
     aria = calculeaza_radical((s_perimetru - l_1) * (s_perimetru - l_2) *
                              (s_perimetru - l_3) * (s_perimetru - l_4))


     # Rotunjim suma obtinuta la 3 decimale
     # Rotunjim suma obținută la 3 zecimale
     return round(aria, 3)
     return round(aria, 3)


# Testam problema
 
# Testăm problema
if __name__ == "__main__":
if __name__ == "__main__":
     print(problema_3814(13, 14, 3, 13))
     # 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)


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