Cerința
Se dau lungimile laturilor unui triunghi ABC. Aflați lungimile medianelor duse din A,B si C.
Date de intrare
Programul citește de la tastatură numerele a,b,c, reprezentând lungimile laturilor AB,BC,AC.
Date de ieșire
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.
Restricții și precizări
1 ≤ a,b,c ≤ 1000
Exemplul 1:
Intrare
3 4 5
Ieșire
4.27 3.60 2.50
Exemplul 2:
Intrare
4 5 10
Ieșire
Imposibil
Salut! Va rog mult sa ma ajutati la aceasta problema. Este problema 3806 de pe pbinfo. Am incercat sa o rezolv, dar nu reusesc.
Răspunsuri la întrebare
Salut!
Ai rezolvarea in C++ mai jos
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
/*
* Teorema medianei:
* MA = mediana trasa din punctul A pe latura BC
* MA*MA = ( 2*(AB*AB+AC*AC) - BC*BC ) / 4
*
* Un triunghi exista daca:
* AB+AC >= BC si AB+BC >= AC si BC+AC >= AB
*/
double a, b, c, MA, MB, MC;
// a = AB, b = BC, c = AC
cin >> a >> b >> c;
if (a + b >= c && a + c >= b && b + c >= a)
{
MA = sqrt((2 * (b * b + c * c) - a * a) / 4);
MB = sqrt((2 * (a * a + c * c) - b * b) / 4);
MC = sqrt((2 * (b * b + a * a) - c * c) / 4);
//Fixes
MA = (int)(MA * 100) / 100.0;
MB = (int)(MB * 100) / 100.0;
MC = (int)(MC * 100) / 100.0;
cout << fixed << setprecision(2) << MA << " " << MB << " " << MC;
}
else
{
cout << "Imposibil";
}
return 0;
}
- Ti-am atasat si fisierul mai jos