3814 - Arie Patrulater Inscriptibil: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
 
(One intermediate revision 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
# 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):
    """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 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):
def calculeaza_arie_perimetru(l_1, l_2, l_3, l_4):
    """Calculează aria și perimetrul."""
     # 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 63: Line 57:




# Testăm problema
# Verificăm dacă acest script este rulat direct (nu este importat ca modul)
if __name__ == "__main__":
if __name__ == "__main__":
     # citim datele de intrare de la utilizator
     try:
    lat_1 = input()
        # Citim laturile de la utilizator
    lat_2 = input()
        latura_1 = float(input("Introduceti prima latura: "))
    lat_3 = input()
        latura_2 = float(input("Introduceti a doua latura: "))
    lat_4 = input()
        latura_3 = float(input("Introduceti a treia latura: "))
    # validăm datele de intrare
        latura_4 = float(input("Introduceti a patra latura: "))
    date = valideaza_date(lat_1, lat_2, lat_3, lat_4)
 
     # dacă datele sunt valide, calculăm aria și perimetrul
        # Verificăm dacă datele introduse sunt valide
     if date is not None:
        if verificare(latura_1, latura_2, latura_3, latura_4):
         print(calculeaza_arie_perimetru(*date))
            # 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>