SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: dadevil_g en Sábado 17 de Febrero de 2007, 22:31

Título: Pequeño Problemita
Publicado por: dadevil_g en Sábado 17 de Febrero de 2007, 22:31
Wenas a todos los programadores y programadoras de este foro, hace mucho que estoy registrao aqui, y hace mucho que no me topaba con un problema como este, sucede que un profe de fisica nos dejo hacer un programa que descomponga las fuerzas y todo ese chou, agarre papel, lapiz, y empece a solucionar el problema, ahora, ya tengo el codigo, hice el programa y corre perfectamente, pero el problema me viene con el resultado, le he preguntado  otro profe y no me supo decir mas que "hay un problema con los radianes y grados" he investigado como hacer la conversion y la pongo en mi programa pero todos los resultados distan mucho de ser los esperados, si alguien pudiera y quiciera ayudarme aqui les dejo el codigo y muchas gracias de antemano por molestarse en leer este post

Código: Text
  1. #include "stdafx.h"
  2. #include "math.h"
  3. #include "stdio.h"
  4. #include "stdlib.h"
  5. #define conver 360/2*3.1415926535
  6.  
  7. void sistema_ingles ();
  8. void sistema_internacional ();
  9. void ayuda();
  10.  
  11. int _tmain(int argc, _TCHAR* argv[])
  12. {
  13.   int menu;
  14.   float a,b,c,d;
  15.   float u,v,w,x;
  16.   printf("===============================================================\n");
  17.   printf(" U N I V E R S I D A D  A U T O N O M A  D E  Z A C A T E C A S\n");
  18.   printf("\n\n\n");
  19.   printf("1.- Sistema Internacional\n");
  20.   printf("2.- Sistema Ingles\n");
  21.   printf("3.- Ayuda\n");
  22.   printf("4.- Salir");
  23.   printf("\n\nSelecciona una opcion a utilizar: ");
  24.   scanf("%d",&menu);
  25. switch(menu){
  26.     case 1:
  27.       printf("1.- Sistema Internacional\n");
  28.       system("cls");
  29.       sistema_internacional();
  30.       break;
  31.     case 2:
  32.       printf("2.- Sistema Ingles\n");
  33.       system("cls");
  34.       sistema_ingles();
  35.       break;
  36.     case 3:
  37.       printf("3.- Ayuda\n");
  38.       system("cls");
  39.       ayuda();
  40.       getchar();
  41.       break;
  42.     case 4:
  43.       printf("4.- Salir");
  44.             break;
  45.     default:
  46.       printf("Opcion no valida");
  47.   }
  48. }
  49.  
  50. void sistema_ingles ()
  51. {
  52.   float u,v,w,x;
  53.   printf("Da la magnitud en libras");
  54.   printf("\nMagnitud: ");
  55.   scanf("%f",&u);
  56.   printf("\nDa la direccion en grados");
  57.   printf("\nDireccion: ");
  58.   scanf("%f",&v);
  59.   w=cos(v);
  60.   x=sin(v);
  61.   getchar();
  62.   printf("\nResultante en 1: %1.5f Lb",w*conver);
  63.   printf("\nResultante en 2: %1.5f Lb",x*conver);
  64.   printf("\n\nLOS RESULTADOS SON EXPRESADOS EN RADIANES");
  65.   getchar();
  66. }
  67.  
  68. void sistema_internacional ()
  69. {
  70.   float a,b,c,d,e,f;
  71.   printf("Da la magnitud en newtons");
  72.   printf("\nMagnitud: ");
  73.   scanf("%f",&a);
  74.   printf("\nDa la direccion en grados");
  75.   printf("\nDireccion: ");
  76.   scanf("%f",&b);
  77.   getchar();
  78.   c = cos (B);
  79.   d = sin (B);
  80.   e= c;
  81.   f= d;
  82.   printf("\nResultante en 1: %1.5f Newtons",e*a);
  83.   printf("\nResultante en 2: %1.5f Newtons",f*a);
  84.   printf("\n\nLOS RESULTADOS SON EXPRESADOS EN RADIANES");
  85.   getchar();
  86. }
  87.  
  88. void ayuda()
  89. {
  90.   printf("Programa diseñado para la asignatura de Fisica 1 (Estatica)\n\n");
  91.   printf("Impartida por el Ing. Jose Antonio Rodriguez Rodriguez\n");
  92.   printf("La opcion 1 ayuda a resolver por medio del sistema ingles\n");
  93.   printf("un sistema de dos fuerzas en libras\n\n");
  94.   printf("La opcion 2 ayuda a resolver por medio del sistema internacional\n");
  95.   printf("un sistema de dos fuerzas en newtons\n\n");
  96.   printf("La opcion 3 despliega esta ayuda\n");
  97.   printf("\nLa opcion 4 sale del programa");
  98.   getchar();
  99. }
  100.  
  101.  

P.D. el programa esta escrito en C, y estoy utilizando el Visual Studio 2005  :comp:
Título: Re: Pequeño Problemita
Publicado por: TRod en Sábado 17 de Febrero de 2007, 23:43
Por lo que recuerdo antes de ejecutar las funciones sin, cos, etc. debes de hacer la conversion de grados a radianes antes de pasar el parametro a estas funciones, ya que las mismas estan esperando un valor especificado en radianes.
Googlea un poco y rapidamente daras con alguna solucion.

¿  grados*(PI/180) = radianes ?
Título: Re: Pequeño Problemita
Publicado por: Mollense en Domingo 18 de Febrero de 2007, 06:29
Cita de: "TRod"
Por lo que recuerdo antes de ejecutar las funciones sin, cos, etc. debes de hacer la conversion de grados a radianes antes de pasar el parametro a estas funciones, ya que las mismas estan esperando un valor especificado en radianes.
Googlea un poco y rapidamente daras con alguna solucion.

¿  grados*(PI/180) = radianes ?
Exactamente  :smartass:

Cada vez que uses una trigonométrica necesitas hacer la conversión.
Título: Re: Pequeño Problemita
Publicado por: dadevil_g en Domingo 18 de Febrero de 2007, 20:36
A ver si entendi, la entrada es en grados, y hay que transformarla a radianes, y mandarlo a la funcion sin, o cos, y despues volver a convertir a grados o ya con el simple hecho de mandarlo en gradianes a la funcion debe de dar el resultado esperado? :blink:  :unsure:
Título: Re: Pequeño Problemita
Publicado por: Mollense en Domingo 18 de Febrero de 2007, 20:51
Si quisieras obtener por ejemplo el seno de 90º harías algo como esto:
Código: Text
  1.  x=sin(90*PI/180);
  2.  
x debería tomar el valor de "1".-

Saludos