Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Bob1098 en 7 Abril 2014, 17:52 pm



Título: Duda razones trigonométricas C++
Publicado por: Bob1098 en 7 Abril 2014, 17:52 pm
Hola buenas. Estaba practicando un poco de trigonometría haciendo un simple programa de C++ que te pide un angulo y el cateto opuesto, y calcula la hipotenusa de un triángulo rectágulo. Funciona bien y parece darme el resultado, pero hay veces que sale negativo =S.
Código:
#include <iostream>
#include <cmath>

using namespace std;

int main() {
float A, co, h;

cout << "Introduce el angulo y el cateto opuesto: ";
cin >> A;
cin >> co;

h = co / (sin(A));
cout << "La hipotenusa es: " << h;
cin.get();

return 0;
}

No sé, yo creo que está bien pero si alguien me pudiera explicar el por qué de un resultado negativo...

Gracias de antemano.


Título: Re: Duda razones trigonométricas C++
Publicado por: eferion en 7 Abril 2014, 17:54 pm
Pondrás valores de ángulo menores de 90º, no??

Por otro lado, "sin" funciona con radianes, no con grados. Tienes que aplicar la conversión A*PI/180 para pasar los grados a radianes.


Título: Re: Duda razones trigonométricas C++
Publicado por: noele1995 en 7 Abril 2014, 19:56 pm
-Bueno el seno oscila entre 1 y -1 por lo tanto puede devolver tanto positivo como negativo:

(http://upload.wikimedia.org/wikipedia/commons/thumb/7/7f/FunTriR100.svg/650px-FunTriR100.svg.png)

Posible solucion: utilizar valor absoluto
Código
  1. x = abs(x);

-Atento a lo que dijo eferion sobre las unidades porque el angulo nunca puede ser mayor de 90 en un triangulo rectangulo y siempre deberia ser positivo el seno,es por lo que te sale negativo.

Saludos