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

Cerința
Se dau lungimile laturilor unui triunghi ABC. Calculati lungimile inaltimilor duse din A, B, C.

Date de intrare
Programul citește de la tastatură numerele a, b, c reprezentand lungimile laturilor AB, BC, AC.

Date de ieșire
Programul va afișa pe ecran lungimile inaltimilor triunghiului cu 2 zecimale exacte daca acesta 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

3.00 2.40 4.00
Exemplul 2:
Intrare

4 5 10
Ieșire

Imposibil

Salut! Va rog mult sa ma ajutati la acest exercitiu. Am incercat sa il fac dar la afisare nu afiseaza nimic.


andrei750238: Calculezi aria cu Heron, calculezi inaltimile stiind ca Aria = b*h/2
ciprian74: ok. Am inteles. Am sa incerc. Multumesc!

Răspunsuri la întrebare

Răspuns de andreidamian604
2

Răspuns:

#include <iostream>

#include <cmath>

#include <iomanip>

using namespace std;

int main()

{

double a, b, c;

cin >> a >> b >> c;

if ( a + b < c || a + c < b || a + b < c ) cout << "Imposibil";

else

{

double sp = ( a + b + c ) / 2;

double arie = sqrt ( sp * ( sp - a ) * ( sp - b ) * ( sp - c ));

double ha = arie * 2 / b;

double hb = arie * 2 / c;

double hc = arie * 2 / a;

ha = ( int ) ( ha * 100.000 ) / 100.000;

hb = ( int ) ( hb * 100.000 ) / 100.000;

hc = ( int ) ( hc * 100.000 ) / 100.000;

cout << std::fixed << std::setprecision(2) << ha << ' ' << hb << ' ' << hc;

}

return 0;

}

da 100 pe pbinfo


andreidamian604: aia cu unghiuri e singura care nu mi-a ieșit din toata lista aia
ciprian74: nici mie nu imi iese. Am luat doar 20 de puncte pe pbinfo
andreidamian604: poți trimite codul sa mă uit?
ciprian74: da. Il pun aici pe chat
ciprian74: #include
#include
#include
using namespace std;
int main()
{
int A,B,C;
double AB,BC,AC;
cin>>AB>>BC>>AC;
if((A > B + C) || (B > A + C) || (C > A + B))
cout<<"Imposibil";
else
{
double SP=(AB+BC+AC)/2;
int Aria=sqrt(SP*(SP-BC)*(SP-AC)*(SP-AB));
Aria=(AB*AC*sin(A))/2;
Aria=(AB*BC*sin(B))/2;
Aria=(AC*BC*sin(C))/2;
int aux;
aux=AB*100;
AB=(double)aux/100;
aux=AC*100;
AC=(double)aux/100;
aux=BC*100;
BC=(double)aux/100;
cout << fixed << setprecision(2) << A << " " << B << " " << C;
}
return 0;
}
andreidamian604: încearcă să iei din codul meu alea cu * 100.000 / 100.000. pbinfo da erori f ușor când vine vorba de zecimale
ciprian74: ok. mersi foarte mult pentru ajutor
andreidamian604: oricând, dă-mi mesaj in privat daca ai nevoie de ajutor
ciprian74: ok.
ciprian74: salut din nou. Am intampinat niste probleme la problema #3901 de pe pbinfo. M-ai putea ajuta te rog. Am postat intrebarea pe contul meu.
Alte întrebări interesante