3811 - Bisectoare1

From Bitnami MediaWiki
Revision as of 20:27, 10 January 2024 by Tita Marian (talk | contribs) (→‎Exemplu 2)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa[edit | edit source]

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

Date de intrare[edit | edit source]

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

Date de ieșire[edit | edit source]

Programul va afișa pe ecran lungimile bisectoarelor cu 2 zecimale exacte daca triunghiul este valid, altfel se afiseaza mesajul Imposibil. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu respecta cerintele impuse." , iar daca se indeplinesc, se afiseaza mesajul "Datele de intrare respecta cerintele impuse."

Restricţii şi precizări[edit | edit source]

  • 1 ⩽ a, b, c ⩽ 100

Exemplul 1[edit | edit source]

Intrare
3
5
4
Ieșire
Datele de intrare respectă cerințele impuse.
3.20
2.14
2.54



Exemplul 2[edit | edit source]

Intrare
0
1
2
Ieșire
Imposibil
Datele de intrare nu respectă cerințele impuse.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def citeste_laturi():

   a = float(input())  # Citirea valorii pentru latura AB
   b = float(input())  # Citirea valorii pentru latura BC
   c = float(input())  # Citirea valorii pentru latura AC
   return a, b, c

def sunt_lungimi_valide(a, b, c):

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

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

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)
       print("{:.2f} {:.2f} {:.2f}".format(bisectoare_c, bisectoare_a, bisectoare_b))
       print("Datele de intrare respectă cerințele impuse.")
   else:
       print("Imposibil")
       print("Datele de intrare nu respectă cerințele impuse.")

</syntaxhighlight>

Explicație rezolvare[edit | edit source]

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.