[ Foro de C++ ]
Buenas tardes, el día de hoy el profesor mandó una guía a resolver en donde tengo una duda sobre un ejercicio de dicha guía, a continuación está el enunciado.
Supongamos que tenemos un triángulo rectángulo y queremos calcular y mostrar la longitud de los lados A y B al igual que la superficie total S, conociendo para ello la longitud del lado C y el Ángulo (Beta).
#include <iostream>
#include <math.h>
#include <iomanip>
#define PI 3.14159265
using namespace std;
main ()
{
float La, Lb, Lc, S;
int B;
cout<< "ingrese el lado c:";
cin>> Lc;
B=90;
cout<< "el SenB es:"<<setprecision (2)<<sin(B*PI/180)<<endl;
cout<< "para calcular el lado b:"<<endl;
cout<< Lc<<"*"<<sin(B*PI/180)<<"= "<<Lc*sin(B*PI/180)<<endl;
Lb=Lc*sin(B*PI/180);
cout<< "el lado b del triangulo rectangulo es:"<<Lb<<endl;
cout<< "el CosB es:"<<setprecision (2)<<cos(B*PI/180)<<endl;
cout<< "para calcular el lado a:"<<endl;
cout<< Lc<<"*"<<cos(B*PI/180)<<"= "<<Lc*cos(B*PI/180)<<endl;
La= Lc*cos(B*PI/180);
cout<< "el lado a del triangulo rectangulo es:"<<La<<endl;
cout<< "para calcular la superficie:"<<endl;
cout<< La<<"*"<<Lb<<"= "<<La*Lb<<"/"<<2<<"= "<<La*Lb/2<<endl;
S=La*Lb/2;
cout<< "la superficie del triangulo rectangulo es:"<<La*Lb/2<<endl;
system ("pause");
return 0;
}
Cuando ejecuto el programa me dice que el SenB es 1 mientras que el CosB es 0 (pero en el programa me da un resultado de 1.8e-009) yo pensaba que el programa estaba malo pero el profesor me dijo que en realidad está bien... sólo debo manejar los decimales a mi antojo y se acomodará, logré disminuir el rango de decimales a sólo 2 pero a pesar de que simplifique los decimales me sigue mostrando como parte del resultado el "e-00".
Espero que puedan ayudarme :(
Si quieres que salga exactamente con 2 decimales tendrás que hacer:
cout << setprecision (2) << fixed << miDato;
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)