3804 - Raza Cerc Inscris: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
 
(Nu s-au afișat 3 versiuni intermediare efectuate de alți 2 utilizatori)
Linia 6: Linia 6:


==Date de ieșire==
==Date de ieșire==
Programul va afișa pe ecran numărul <span style="color: red;"> r</span>, reprezentând lungimea razei cercului înscris cu <span style="color: red;"> 2</span> zecimale exacte, daca triunghiul este valid, altfel se va afisa mesajul <span style="color: red;"> Imposibil</span>.
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare valide."''', apoi programul va afișa pe ecran numărul <span style="color: red;"> r</span>, reprezentând lungimea razei cercului înscris cu <span style="color: red;"> 2</span> zecimale exacte, daca triunghiul este valid, altfel se va afisa mesajul <span style="color: red;"> Imposibil</span>. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Date de intrare invalide".'''


==Restricții și precizări==
==Restricții și precizări==
Linia 14: Linia 14:


Intrare
Intrare
3 4 5
: 3 4 5


Ieșire
Ieșire
1.00
: Date de intrare valide
: 1.00


==Exemplul 2:==
==Exemplul 2:==
Linia 23: Linia 24:
Intrare
Intrare


4 5 10
: 4 5 10


Ieșire
Ieșire
 
: Date de intrare invalide
Imposibil
: Imposibil


==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
import math
import math


def validare(a, b, c):
def validare(a, b, c):
    flag = True
     if not (a + b > c and b + c > a and c + a > b):
     if not (a + b > c and b + c > a and c + a > b):
         raise ValueError("Triunghiul nu este valid.")
         flag = False
    return flag
 


def rezolvare(a, b, c):
def rezolvare(a, b, c):
     p = (a + b + c) / 2
     p = (a + b + c) / 2
     r = math.sqrt(((p - a) * (p - b) * (p - c)) / p)
     raza = math.sqrt(((p - a) * (p - b) * (p - c)) / p)
     print("{:.2f}".format(r))
     print("{:.2f}".format(raza))


def main():
    try:
        a, b, c = map(int, input("Introduceți laturile triunghiului (separate prin spații): ").split())
        validare(a, b, c)
        rezolvare(a, b, c)
    except ValueError as ve:
        print(ve)


if __name__ == '__main__':
if __name__ == '__main__':
     main()
     a, b, c = map(int, input("Introduceți laturile triunghiului (separate prin spații): ").split())
    if validare(a, b, c):
        rezolvare(a, b, c)
print("Posibil")
    else:
        print("Imposibil")
</syntaxhighlight>
</syntaxhighlight>
==Explicatie cod:==
Funcția validare(a, b, c) verifică dacă laturile a, b și c pot forma un triunghi valid. Aceasta se realizează prin verificarea inegalității triunghiului, care afirmă că suma oricăror două laturi trebuie să fie mai mare decât lungimea celei de-a treia laturi. Dacă această condiție este îndeplinită, funcția returnează True. În caz contrar, se returnează False.
Funcția rezolvare(a, b, c) calculează raza cercului circumscris triunghiului utilizând formula razei circumscrisului unui triunghi dreptunghic. În primul rând, se calculează semiperimetrul triunghiului folosind formula (a + b + c) / 2. Apoi, se calculează raza circumscrisului utilizând formula raza = sqrt(((p - a) * (p - b) * (p - c)) / p), unde p este semiperimetrul. Rezultatul este afișat cu două zecimale folosind formatarea de string "{:.2f}".
În blocul if __name__ == '__main__':, se citesc laturile a, b și c ale triunghiului de la utilizator folosind funcția input() și map(int, input().split()). Apoi, se validează laturile utilizând funcția validare(a, b, c). Dacă laturile formează un triunghi valid, se apelează funcția rezolvare(a, b, c) pentru a calcula și afișa raza cercului circumscris. Dacă laturile nu formează un triunghi valid, se afișează mesajul "Imposibil".

Versiunea curentă din 29 iunie 2023 18:35

Cerința

Se dau lungimile laturilor unui triunghi. Aflați raza cercului înscris triunghiului.

Date de intrare

Programul citește de la tastatură numerele a, b, c, reprezentand lungimile laturilor triunghiului.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi programul va afișa pe ecran numărul r, reprezentând lungimea razei cercului înscris cu 2 zecimale exacte, daca triunghiul este valid, altfel se va afisa mesajul Imposibil. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Date de intrare invalide".

Restricții și precizări

1 ≤ a, b, c ≤ 1000

Exemplul 1:

Intrare

3 4 5

Ieșire

Date de intrare valide
1.00

Exemplul 2:

Intrare

4 5 10

Ieșire

Date de intrare invalide
Imposibil

Rezolvare

import math


def validare(a, b, c):
    flag = True
    if not (a + b > c and b + c > a and c + a > b):
        flag = False
    return flag


def rezolvare(a, b, c):
    p = (a + b + c) / 2
    raza = math.sqrt(((p - a) * (p - b) * (p - c)) / p)
    print("{:.2f}".format(raza))


if __name__ == '__main__':
    a, b, c = map(int, input("Introduceți laturile triunghiului (separate prin spații): ").split())
    if validare(a, b, c):
        rezolvare(a, b, c)
 print("Posibil")
    else:
        print("Imposibil")

Explicatie cod:

Funcția validare(a, b, c) verifică dacă laturile a, b și c pot forma un triunghi valid. Aceasta se realizează prin verificarea inegalității triunghiului, care afirmă că suma oricăror două laturi trebuie să fie mai mare decât lungimea celei de-a treia laturi. Dacă această condiție este îndeplinită, funcția returnează True. În caz contrar, se returnează False. Funcția rezolvare(a, b, c) calculează raza cercului circumscris triunghiului utilizând formula razei circumscrisului unui triunghi dreptunghic. În primul rând, se calculează semiperimetrul triunghiului folosind formula (a + b + c) / 2. Apoi, se calculează raza circumscrisului utilizând formula raza = sqrt(((p - a) * (p - b) * (p - c)) / p), unde p este semiperimetrul. Rezultatul este afișat cu două zecimale folosind formatarea de string "{:.2f}". În blocul if __name__ == '__main__':, se citesc laturile a, b și c ale triunghiului de la utilizator folosind funcția input() și map(int, input().split()). Apoi, se validează laturile utilizând funcția validare(a, b, c). Dacă laturile formează un triunghi valid, se apelează funcția rezolvare(a, b, c) pentru a calcula și afișa raza cercului circumscris. Dacă laturile nu formează un triunghi valid, se afișează mesajul "Imposibil".