3806 - Mediane: Difference between revisions

From Bitnami MediaWiki
 
(3 intermediate revisions by the same user not shown)
Line 41: Line 41:


import math
import math


def validare(a, b, c):
def validare(a, b, c):
     return a + b > c and a + c > b and b + c > a
     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):
def medianele_triunghiului(a, b, c):
Line 49: Line 55:
         print("Imposibil")
         print("Imposibil")
     else:
     else:
         med_a = math.sqrt(2 * b**2 + 2 * c**2 - a**2) / 2
         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_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
         med_c = math.sqrt(2 * a ** 2 + 2 * b ** 2 - c ** 2) / 2
         print("{:.2f} {:.2f} {:.2f}".format(med_a, med_b, med_c))
         print("{:.2f} {:.2f} {:.2f}".format(med_a, med_b, med_c))


def main():
    a, b, c = map(float, input().split())
    medianele_triunghiului(a, b, c)


if __name__ == "__main__":
if __name__ == "__main__":
     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>
</syntaxhighlight>


==Explicație==
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ă.


==Explicatie==
În funcția "validare2", se verifică dacă laturile sunt în intervalul [1, 1000].


Functia validare verifica daca triunghiul exista, iar functia medianele_triunghiului calculeaza medianele si le afiseaza daca triunghiul exista, sau mesajul "Imposibil" in caz contrar.
Funcția "medianele_triunghiului" calculează medienele triunghiului și le afișează în formatul "{:.2f} {:.2f} {:.2f}" (cu două zecimale).


In functia main, valorile a, b, c sunt citite de la tastatura cu ajutorul functiei map si sunt transmise functiei medianele_triunghiului pentru a calcula si afisa media.
Î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.

Latest revision as of 20:03, 7 May 2023

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.