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.
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>
- 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.