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
 
(3 intermediate revisions by the same user not shown)
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
<br>
== Exemplul 2 ==
; Intrare
: 13
: 14
: 3
: n
; Ieșire
: Datele de intrare nu corespund restricțiilor impuse.
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
# Construim radicalul
# 3814  Arie Patrulater Inscriptibil
def radical(n):
 
# 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
     return n ** 0.5


def problema_3814(lat1, lat2, lat3, lat4):
 
def calculeaza_arie_perimetru(l_1, l_2, l_3, l_4):
     # 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
 
# Verificăm dacă acest script este rulat direct (nu este importat ca modul)
if __name__ == "__main__":
if __name__ == "__main__":
     print(problema_3814(13, 14, 3, 13))
     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>
</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>

  1. 3814 Arie Patrulater Inscriptibil
  1. 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)


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