3825 - Radius: Difference between revisions
Pagină nouă: == Cerinţa == 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 == Programul citește de la tastatură numerele '''n''' si '''a'''. == Date de ieşire == 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 == * '''3 ≤ n ≤ 360''' * '''1 ≤ a... |
No edit summary |
||
Line 12: | Line 12: | ||
: 3 2 | : 3 2 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund restricțiilor impuse. | |||
: 1.15 | : 1.15 | ||
== Exemplul 2 == | == Exemplul 2 == | ||
Line 17: | Line 18: | ||
: 4 2 | : 4 2 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund restricțiilor impuse. | |||
: 1.41 | : 1.41 | ||
== Exemplul 3 == | == Exemplul 3 == | ||
Line 22: | Line 24: | ||
: 6 3 | : 6 3 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund restricțiilor impuse. | |||
: 3.00 | : 3.00 | ||
== Exemplul 4 == | |||
; Intrare | |||
: n | |||
; Ieșire | |||
: Datele introduse nu corespund restricțiilor impuse. | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
import math | import math | ||
def distanta_centru_varf( | |||
def verificare_restrictii(n1, a1): | |||
# functia de verificare a datelor de intrare | |||
if 3 <= n1 <= 10 ** 5 and 1 <= a1 <= 10 ** 9: | |||
return True | |||
else: | |||
return False | |||
def distanta_centru_varf(n1, a1): | |||
# Unghiul dintre doua laturi adiacente ale poligonului | # Unghiul dintre doua laturi adiacente ale poligonului | ||
unghi = 2 * math.pi / | unghi = 2 * math.pi / n1 | ||
# Distanta de la centrul poligonului la oricare varf | # Distanta de la centrul poligonului la oricare varf | ||
r1 = a1 / (2 * math.sin(unghi / 2)) | |||
return | return r1 | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
# Citim datele de intrare | try: | ||
# Citim datele de intrare | |||
n, a = map(int, input().split()) | |||
if verificare_restrictii(n, a): # verificam datele de intrare | |||
print("Datele de intrare corespund restrictiilor impuse.") | |||
# Calculam distanta de la centrul poligonului la varf | |||
r = distanta_centru_varf(n, a) | |||
# Afisam rezultatul cu 2 zecimale exacte, fara rotunjire | |||
print(f"{r: .2f}") | |||
else: | |||
print("Datele de intrare nu corespund restrictiilor impuse.") | |||
# ne asteptam la 2 tipuri de erori din cauza datelor de intrare, le tratam corespunzator | |||
except ValueError: | |||
print("Datele de intrare nu corespund restrictiilor impuse.") | |||
except IndexError: | |||
print("Datele de intrare nu corespund restrictiilor impuse.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 17:10, 10 November 2023
Cerinţa
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
Programul citește de la tastatură numerele n si a.
Date de ieşire
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
- 3 ≤ n ≤ 360
- 1 ≤ a ≤ 1000
Exemplul 1
- Intrare
- 3 2
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 1.15
Exemplul 2
- Intrare
- 4 2
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 1.41
Exemplul 3
- Intrare
- 6 3
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 3.00
Exemplul 4
- Intrare
- n
- Ieșire
- Datele introduse nu corespund restricțiilor impuse.
<syntaxhighlight lang="python" line> import math
def verificare_restrictii(n1, a1):
# functia de verificare a datelor de intrare if 3 <= n1 <= 10 ** 5 and 1 <= a1 <= 10 ** 9: return True else: return False
def distanta_centru_varf(n1, a1):
# Unghiul dintre doua laturi adiacente ale poligonului unghi = 2 * math.pi / n1 # Distanta de la centrul poligonului la oricare varf r1 = a1 / (2 * math.sin(unghi / 2)) return r1
if __name__ == "__main__":
try: # Citim datele de intrare n, a = map(int, input().split()) if verificare_restrictii(n, a): # verificam datele de intrare print("Datele de intrare corespund restrictiilor impuse.") # Calculam distanta de la centrul poligonului la varf r = distanta_centru_varf(n, a) # Afisam rezultatul cu 2 zecimale exacte, fara rotunjire print(f"{r: .2f}") else: print("Datele de intrare nu corespund restrictiilor impuse.") # ne asteptam la 2 tipuri de erori din cauza datelor de intrare, le tratam corespunzator except ValueError: print("Datele de intrare nu corespund restrictiilor impuse.") except IndexError: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>