2670 - Ecuatie 4: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 34: Line 34:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
# 2670 - Ecuatie 4
import math
import math




def verificare_restrictii(n, a): # functia de verificare a datelor de intrare
def validare(n1, a1):               # functia de validare a datelor de intrare
     if 3 <= n <= 10**5 and 1 <= a <= 10**9:
     if not (3 <= n1 <= 360 and 1 <= a1 <= 1000):
         return True
         raise ValueError
     else:
     print("Datele introduse corespund restricțiilor impuse.")
        return False
    return True




def calculeaza_distanta(n, a): # functia de rezolvare a problemei
def distanta(n1, a1):             # functia de rezolvare
     r1 = (a / 2) / math.sin(math.pi / n)
     r1 = a1 / (2 * math.sin(math.pi / n1))  # formula pentru distanta de la centrul poligonului la varf
     return r1
     return round(r1, 2)




if __name__ == '__main__':
if __name__ == '__main__':
    # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam
     try:
     try:
         nr_laturi = int(input("Introduceți numărul de laturi ale poligonului: "))
         n = int(input("Introduceti numarul de laturi n: "))         # citirea numarului de laturi
         lungime_latura = float(input("Introduceți lungimea unei laturi: "))
         a = int(input("Introduceti lungimea unei laturi a: "))      # citirea lungimii unei laturi
        validare(n, a)                              # apelul functiei de validare
        r = distanta(n, a)                          # apelul functiei de rezolvare
        print(f" {r}")


        if verificare_restrictii(nr_laturi, lungime_latura):  # verificarea restrictiilor
            print("Datele de intrare corespund restrictiilor impuse.")
            r = calculeaza_distanta(nr_laturi, lungime_latura)  # apelul functiei de rezolvare
            print("{:.2f}".format(r))  # afisarea rezultatului
        else:
            print("Datele de intrare nu corespund restrictiilor impuse.")
     except ValueError:
     except ValueError:
         print("Datele de intrare nu corespund restrictiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")
    except IndexError:
        print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 21:56, 14 November 2023

Cerinţa[edit | edit source]

Se da un poligon regulat cu n laturi si a lungimea unei laturi. Aflati distanta de la centrul poligonului la oricare varf.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n si a.

Date de ieşire[edit | edit source]

Programul va afișa pe ecran numărul r, reprezentand distanta de la centrul poligonului la varf, cu 2 zecimale exacte, fără rotunjire.

Restricții și precizări[edit | edit source]

  • 3 ⩽ n ⩽ 360
  • 1 ⩽ a ⩽ 1000

Exemplul 1[edit | edit source]

Intrare
3 2
Ieșire
Datele introduse corespund restricțiilor impuse.
1.15

Exemplul 2[edit | edit source]

Intrare
4 2
Ieșire
Datele introduse corespund restricțiilor impuse.
1.41

Exemplul 3[edit | edit source]

Intrare
6 3
Ieșire
Datele introduse corespund restricțiilor impuse.
3.00

Exemplul 4[edit | edit source]

Intrare
3 n
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 2670 - Ecuatie 4

import math


def validare(n1, a1): # functia de validare a datelor de intrare

   if not (3 <= n1 <= 360 and 1 <= a1 <= 1000):
       raise ValueError
   print("Datele introduse corespund restricțiilor impuse.")
   return True


def distanta(n1, a1): # functia de rezolvare

   r1 = a1 / (2 * math.sin(math.pi / n1))  # formula pentru distanta de la centrul poligonului la varf
   return round(r1, 2)


if __name__ == '__main__':

   # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam
   try:
       n = int(input("Introduceti numarul de laturi n: "))          # citirea numarului de laturi
       a = int(input("Introduceti lungimea unei laturi a: "))       # citirea lungimii unei laturi
       validare(n, a)                               # apelul functiei de validare
       r = distanta(n, a)                          # apelul functiei de rezolvare
       print(f" {r}")
   except ValueError:
       print("Datele de intrare nu corespund restricțiilor impuse.")
   except IndexError:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>