Arie trapez
Cum calculam aria unui trapez oarecare daca se cunosc laturile trapezului?
Problema se poate gasi pe site pbinfo – #Arie trapez
Cerința
Se dau lungimile laturilor unui trapez ABCD
cu AB||CD
. Aflati aria acestuia.
Date de intrare
Programul citește de la tastatură lungimile laturilor AB, BC, CD, AD
.
Date de ieșire
Programul va afișa pe ecran numărul A
reprezentand aria trapezului, cu 2
zecimale exacte, daca trapezul este valid, altfel se afiseaza mesajul Imposibil
.
Restricții și precizări
1 ≤ AB, BC, CD, AD ≤ 1000
Aria trapezului poate fi calculata in general cu formula bine cunoscuta (baza mare + baza mica) x inaltimea / 2.
In acest caz insa nu cunoastem inaltimea trapezului ci laturile sale neparalele.
O metoda ar fi sa determinam efectiv inaltimea trapezului, dar se cunoaste in literatura de specialitate si o formula de calcul a ariei unui trapez in functie de toate cele patru laturi ale sale. Este o relatie mai rar utilizata.
aria=(a+b)/2 *sqrt(c*c-m*m) unde m=((b-a)*(b-a)+c*c-d*d)/(2*(b-a))
Aceasta metoda o vom aborda in rezolvarea acestei probleme.
Textul problemei cere de asemenea tiparirea rezultatului final cu 2 zecimale exacte adica fara rotunjire.
Pentru aceasta stiind ca numarul final obtinut in variabila arie
va fi un numar real, il convertim la un numar intreg in variabila ajutatoare ariel
. De fapt luam partea intreaga a numarului real obtinut ca arie
.
Folosim un artificiu de calcul in care inmultim si impartim cu 100 pentru a putea retine primele 2 zecimale fara a permite rotunjirea lor automata.
Aria unui trapez oarecare a carui laturi se cunosc, va fi calculata astfel conform cerintelor problemei.
using namespace std; int main() { double a,b,c,d; cin >> b >> d >> a >> c; // aria=(a+b)/2 *sqrt(c*c-m*m) // m=((b-a)*(b-a)+c*c-d*d)/(2*(b-a)) double m=((b-a)*(b-a)+c*c-d*d)/(2*(b-a)); double n=c*c-m*m; if(b!=a && n>0){ double arie=(a+b)/2 *sqrt(n); long long ariel=arie; arie=ariel+(int)((arie-ariel)*100)/100.0; cout << setprecision(2) << fixed << arie<< endl; }else{ cout << "Imposibil"<< endl; } return 0; }
Daca cauti mai multe probleme rezolvate de pe site pbinfo, poti sa mai gasesti pe site-ul nostru in categoria Invata cu noi.
Te asteptam cu intrebari si sugestii pe aceasta tema!