3811 - Bisectoare1
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. Î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
- 1 ⩽ a, b, c ⩽ 100
Exemplul 1
- Intrare
3 5 4
- Ieșire
Datele de intrare respectă cerințele impuse. 3.20 2.14 2.54
Exemplul 2
- Intrare
0 1 2
- Ieșire
Imposibil Datele de intrare nu respectă cerințele impuse.
Rezolvare
<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
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.