3806 - Mediane

From Bitnami MediaWiki
Revision as of 20:03, 7 May 2023 by Vardai Erwin (talk | contribs) (→‎Rezolvare ver. 1)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerință[edit]

Se dau lungimile laturilor unui triunghi ABC. Aflați lungimile medianelor duse din A,B si C.


Date de intrare[edit]

Programul citește de la tastatură numerele a,b,c, reprezentând lungimile laturilor AB,BC,AC.

Date de ieșire[edit]

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]

  • 1 ≤ a,b,c ≤ 1000

Exemplul 1[edit]

Intrare
3 4 5


Ieșire
Datele de intrare corespund restrictiilor impuse.
4.27 3.61 2.50

Exemplul 2[edit]

Intrare
4 5 10


Ieșire
Datele de intrare corespund restrictiilor impuse.
Imposibil

Rezolvare[edit]

Rezolvare ver. 1[edit]

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

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.