3806 - Mediane
Cerință[edit | edit source]
Se dau lungimile laturilor unui triunghi ABC. Aflați lungimile medianelor duse din A,B si C.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele a,b,c, reprezentând lungimile laturilor AB,BC,AC.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Programul va afișa pe ecran trei numere, reprezentând lungimile celor 3 mediane, fiecare cu 2 zecimale exacte, fără rotunjire, daca triunghiul este valid, altfel se afiseaza mesajul Imposibil. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări[edit | edit source]
- 1 ≤ a,b,c ≤ 1000
Exemplul 1[edit | edit source]
- Intrare
- 3 4 5
- Ieșire
- Datele de intrare corespund restrictiilor impuse.
- 4.27 3.61 2.50
Exemplul 2[edit | edit source]
- Intrare
- 4 5 10
- Ieșire
- Datele de intrare corespund restrictiilor impuse.
- Imposibil
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1">
import math
def validare(a, b, c):
return int(a) + int(b) > int(c) and int(a) + int(c) > int(b) and int(b) + int(c) > int(a)
def validare2(a, b, c):
return 1 <= int(a) <= 1000 and 1 <= int(b) <= 1000 and 1 <= int(c) <= 1000
def medianele_triunghiului(a, b, c):
if not validare(a, b, c): print("Imposibil") else: med_a = math.sqrt(2 * b ** 2 + 2 * c ** 2 - a ** 2) / 2 med_b = math.sqrt(2 * a ** 2 + 2 * c ** 2 - b ** 2) / 2 med_c = math.sqrt(2 * a ** 2 + 2 * b ** 2 - c ** 2) / 2 print("{:.2f} {:.2f} {:.2f}".format(med_a, med_b, med_c))
if __name__ == "__main__":
a, b, c = map(str, input().split()) if validare2(a, b, c): print("Datele de intrare corespund restrictiilor impuse.") a, b, c = float(a), float(b), float(c) medianele_triunghiului(a, b, c) else: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>
Explicație[edit | edit source]
Acest cod implementează un program care calculează medienele unui triunghi dat prin lungimile laturilor sale.
În funcția "validare", se verifică dacă laturile triunghiului îndeplinesc condiția de existență a triunghiului, adică suma oricăror două laturi trebuie să fie mai mare decât a treia latură.
În funcția "validare2", se verifică dacă laturile sunt în intervalul [1, 1000].
Funcția "medianele_triunghiului" calculează medienele triunghiului și le afișează în formatul "{:.2f} {:.2f} {:.2f}" (cu două zecimale).
În funcția principală, programul primește valorile laturilor triunghiului de la tastatură în formatul float, iar apoi verifică dacă acestea respectă intervalul [1, 1000] prin apelul funcției "validare2". Dacă valorile sunt în interval, se afișează un mesaj că datele corespund restricțiilor impuse, iar apoi laturile sunt transformate în int-uri și se apelează funcția "medianele_triunghiului". Dacă datele nu corespund restricțiilor impuse, se afișează un mesaj corespunzător.