3806 - Mediane: Difference between revisions
Vardai Erwin (talk | contribs) |
Vardai Erwin (talk | contribs) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 29: | Line 29: | ||
==Exemplul 2== | ==Exemplul 2== | ||
;'''Intrare ''' | ;'''Intrare ''' | ||
:4 5 10 | |||
;'''Ieșire ''' | ;'''Ieșire ''' | ||
:Datele de intrare corespund restrictiilor impuse. | |||
:Imposibil | |||
==Rezolvare== | ==Rezolvare== | ||
Line 44: | 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 52: | 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)) | ||
if __name__ == "__main__": | 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> | </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ă. | |||
Î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. |
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.