Informatică, întrebare adresată de ciprian74, 8 ani în urmă

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

Răspuns de Sergetec
1

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
Anexe:

ciprian74: Multumesc!
Alte întrebări interesante