3811 - Bisectoare1: Difference between revisions

From Bitnami MediaWiki
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,...
 
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
== Exemplu 1 ==
== Exemplul 1 ==
; Intrare
; Intrare
: 3
3
: 5
5
: 4
4
; Ieșire
; Ieșire
:3.20
Datele de intrare respectă cerințele impuse.
:2.14
3.20
:2.54
2.14
2.54
 
 
<br>
<br>
== Exemplu 2 ==
== Exemplu 2 ==
; Intrare
; Intrare
: 0
0
1
2
; Ieșire
; Ieșire
: Datele de intrare nu corespund restricțiilor impuse.
Imposibil
<br>
Datele de intrare nu respectă cerințele impuse.
; Intrare
 
: 4
: 5
: 10
; Ieșire
:Imposibil
== Rezolvare ==  
== Rezolvare ==  
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#3811 - Bisectoare1
def citeste_laturi():
def citeste_laturi():
     a = float(input("Introduceți lungimea laturii AB (1-1000): "))
     a = float(input()) # Citirea valorii pentru latura AB
     b = float(input("Introduceți lungimea laturii BC (1-1000): "))
     b = float(input()) # Citirea valorii pentru latura BC
     c = float(input("Introduceți lungimea laturii AC (1-1000): "))
     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 <= 1000 and 1 <= b <= 1000 and 1 <= c <= 1000
     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
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__":
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)
         afiseaza_bisectoare(bisectoare_c, bisectoare_a, bisectoare_b)
         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.