3811 - Bisectoare1

From Bitnami MediaWiki
Revision as of 18:38, 23 October 2023 by Tita Marian (talk | contribs) (Pagină nouă: == Cerinţa == Se dau lungimile laturilor unui triunghi ''' ABC'''. Aflati lungimile bisectoarelor duse din ''' C, A, B'''. == Date de intrare == Programul citește de la tastatură numerele ''' a, b, c''', reprezentand lungimile laturilor ''' AB, BC, AC'''. == Date de ieșire == Programul va afișa pe ecran lungimile bisectoarelor cu 2 zecimale exacte daca triunghiul este valid, altfel se afiseaza mesajul ''' Imposibil'''. == Restricţii şi precizări == * 1 ⩽ '''a, b,...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

Se dau lungimile laturilor unui triunghi ABC. Aflati lungimile bisectoarelor duse din C, A, B.

Date de intrare

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

Date de ieșire

Programul va afișa pe ecran lungimile bisectoarelor cu 2 zecimale exacte daca triunghiul este valid, altfel se afiseaza mesajul Imposibil.

Restricţii şi precizări

  • 1 ⩽ a, b, c ⩽ 100

Exemplu 1

Intrare
3
5
4
Ieșire
3.20
2.14
2.54


Exemplu 2

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


Intrare
4
5
10
Ieșire
Imposibil

Rezolvare

<syntaxhighlight lang="python" line>

  1. 3811 - Bisectoare1

def citeste_laturi():

   a = float(input("Introduceți lungimea laturii AB (1-1000): "))
   b = float(input("Introduceți lungimea laturii BC (1-1000): "))
   c = float(input("Introduceți lungimea laturii AC (1-1000): "))
   return a, b, c

def sunt_lungimi_valide(a, b, c):

   return 1 <= a <= 1000 and 1 <= b <= 1000 and 1 <= c <= 1000

def este_triunghi_valid(a, b, c):

   return a + b > c and a + c > b and b + c > a

def calculeaza_bisectoare(a, b, c):

   s = (a + b + c) / 2
   bisectoare_c = 2 * (s * b * c / (2 * s * s - b * b)) ** 0.5
   bisectoare_a = 2 * (s * a * c / (2 * s * s - a * a)) ** 0.5
   bisectoare_b = 2 * (s * a * b / (2 * s * s - c * c)) ** 0.5
   return bisectoare_c, bisectoare_a, bisectoare_b

def afiseaza_bisectoare(bisectoare_c, bisectoare_a, bisectoare_b):

   print("Lungimea bisectoarei duse din C: {:.2f}".format(bisectoare_c))
   print("Lungimea bisectoarei duse din A: {:.2f}".format(bisectoare_a))
   print("Lungimea bisectoarei duse din B: {:.2f}".format(bisectoare_b))

if __name__ == "__main__":

   a, b, c = citeste_laturi()
   if sunt_lungimi_valide(a, b, c) and este_triunghi_valid(a, b, c):
       bisectoare_c, bisectoare_a, bisectoare_b = calculeaza_bisectoare(a, b, c)
       afiseaza_bisectoare(bisectoare_c, bisectoare_a, bisectoare_b)
   else:
       print("Imposibil:")

</syntaxhighlight>

Explicație rezolvare

Primul pas implică citirea lungimilor laturilor triunghiului (a, b, c) de la tastatură Funcția sunt_lungimi_valide(a, b, c) returnează True dacă lungimile sunt valide și False în caz contrar. Funcția este_triunghi_valid (a, b, c) returnează True dacă acestea formează un triunghi valid și False în caz contrar. Pasul 4 presupune calculul lungimilor bisectoarelor și le returnează sub formă de tuplă (bisectoare_c, bisectoare_a, bisectoare_b). Ultimul pas implică afișarea lungimilor bisectoarelor cu 2 zecimale exacte.