3814 - Arie Patrulater Inscriptibil: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
Line 26: Line 26:
== 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 55:




# 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>

Revision as of 17:27, 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>

  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>