3811 - Bisectoare1: Difference between revisions
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,... |
Tita Marian (talk | contribs) No edit summary |
||
Line 5: | Line 5: | ||
== Date de ieșire == | == 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'''. | 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 == | == Restricţii şi precizări == | ||
* 1 ⩽ '''a, b, c''' ⩽ 100 | * 1 ⩽ '''a, b, c''' ⩽ 100 | ||
== | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
3 | |||
5 | |||
4 | |||
; Ieșire | ; Ieșire | ||
Datele de intrare respectă cerințele impuse. | |||
3.20 | |||
2.14 | |||
2.54 | |||
<br> | <br> | ||
== Exemplu 2 == | == Exemplu 2 == | ||
; Intrare | ; Intrare | ||
0 | |||
1 | |||
2 | |||
; Ieșire | ; Ieșire | ||
Imposibil | |||
Datele de intrare nu respectă cerințele impuse. | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def citeste_laturi(): | def citeste_laturi(): | ||
a = float(input( | a = float(input()) # Citirea valorii pentru latura AB | ||
b = float(input( | b = float(input()) # Citirea valorii pentru latura BC | ||
c = float(input( | c = float(input()) # Citirea valorii pentru latura AC | ||
return a, b, c | return a, b, c | ||
def sunt_lungimi_valide(a, b, c): | def sunt_lungimi_valide(a, b, c): | ||
return 1 <= a <= | return 1 <= a <= 100 and 1 <= b <= 100 and 1 <= c <= 100 | ||
def este_triunghi_valid(a, b, c): | def este_triunghi_valid(a, b, c): | ||
Line 50: | Line 50: | ||
bisectoare_b = 2 * (s * a * b / (2 * s * s - c * c)) ** 0.5 | bisectoare_b = 2 * (s * a * b / (2 * s * s - c * c)) ** 0.5 | ||
return bisectoare_c, bisectoare_a, bisectoare_b | return bisectoare_c, bisectoare_a, bisectoare_b | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
Line 61: | Line 56: | ||
if sunt_lungimi_valide(a, b, c) and este_triunghi_valid(a, b, c): | 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) | 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: | else: | ||
print("Imposibil | print("Imposibil") | ||
print("Datele de intrare nu respectă cerințele impuse.") | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicație rezolvare == | == Explicație rezolvare == | ||
Primul pas implică citirea lungimilor laturilor triunghiului (a, b, c) de la tastatură | Primul pas implică citirea lungimilor laturilor triunghiului (a, b, c) de la tastatură |
Revision as of 20:27, 10 January 2024
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
Exemplu 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.