Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Tengo un problema de pasar de polar a rectangular en la funcion creada

Estas en el tema de Tengo un problema de pasar de polar a rectangular en la funcion creada en el foro de C/C++ en Foros del Web. HOLA, ME LLAMO JOSE TENGO UN PROBLEMA CON UN PROGRAMA EN DEV C++ AL PASAR DE POLAR A CARTESIANA. AL COMPROBAR CON LA CALCULADORA CON ...
  #1 (permalink)  
Antiguo 16/01/2014, 11:35
 
Fecha de Ingreso: enero-2014
Mensajes: 1
Antigüedad: 10 años, 3 meses
Puntos: 0
Pregunta Tengo un problema de pasar de polar a rectangular en la funcion creada

HOLA,

ME LLAMO JOSE

TENGO UN PROBLEMA CON UN PROGRAMA EN DEV C++ AL PASAR DE POLAR A CARTESIANA.

AL COMPROBAR CON LA CALCULADORA CON UN EJEMPLO ME DA LO SIGUIENTE:

P(5,60)-->R(2.5,4.33j)

Y SEGUN LO HE PLANTEADO ME SALE LO SIGUIENTE:

P(5,60)-->R(-272.15+(-87.32)j)

NOSE SI ES QUE TENGO QUE AÑADIR ALGO MAS O QUE ,O SE ME ESCAPA ALGO SI ALGUIEN ME PUEDE EXAR UNA MANO SE LO AGRADEZCO.

UN SALUDOTE AL FORO

JOSE

PROGRAMA_1

#include<stdio.h>
#include<math.h>
#define PI 3.1415

float dato(){
float a;
printf("\n\nIntroducir valor:");
scanf("%f",&a);
return a;
}

void rectangular_polar(float a,float b){

float c,d;
c=sqrt(pow(a,2)+pow(b,2));
d=(atan((b/a))*180)/PI;
printf("\nR(%.2f + %.2fj)-->P(%.2f,%.2f)",a,b,c,d);

}

void polar_rectangular(float a,float b){

float c,d;

c=a*cos(b)*180/PI;
d=a*sin(b)*180/PI;

printf("\nP(%.2f,%.2f)-->R(%.2f + %.2fj)",a,b,c,d);

}


main()
{
//INICIO DEL PROGRAMA
/************************************************** ***************************/
//variables
/************************************************** ***************************/
int opc;
float a,b;
/************************************************** ***************************/
/******************************** MENU ************************************/

printf("\n1.-Pasar de rectangular a Polar");
printf("\n2.-Pasar de Polar a rectangular");

printf("\n\nEn el siguiente menu elegir la opcion(1/2):");
scanf("%d",&opc);

/******************************** OPC1 ************************************/
if(opc==1){
a=dato();
b=dato();
rectangular_polar(a,b);
}
/************************************************** ***************************/

/******************************** OPC2 ************************************/
if(opc==2){
a=dato();
b=dato();
polar_rectangular(a,b);
}
/************************************************** ***************************/



printf("\n\nGracias por usar el programa\n\n");

system("pause");

}//FIN DEL PROGRAMA
  #2 (permalink)  
Antiguo 17/01/2014, 06:50
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Tengo un problema de pasar de polar a rectangular en la funcion creada

Código C:
Ver original
  1. void polar_rectangular(float a,float b){
  2.  
  3. float c,d;
  4.  
  5. c=a*cos(b)*180/PI;
  6. d=a*sin(b)*180/PI;
  7.  
  8. printf("\nP(%.2f,%.2f)-->R(%.2f + %.2fj)",a,b,c,d);
  9.  
  10. }

Si en esta función el ángulo lo estás pasando en grados, tienes mal la conversión. Primero, estás calculando el coseno y el seno de un ángulo que has dado en grados, pero te lo calcula en radianes. Después, el valor obtenido lo multiplicas por 180/PI (que sería para pasar de radianes a grados, tal como has hecho en la función de paso de rectangular a polar). El factor para pasar de grados a radianes es el inverso, es decir, PI/180, El ángulo debes pasarlo a radianes antes de calcular el seno y coseno, es decir:


Código C:
Ver original
  1. void polar_rectangular(float a,float b){
  2.  
  3. float c,d;
  4.  
  5. c=a*cos(b*PI/180);
  6. d=a*sin(b*PI/180);
  7.  
  8. printf("\nP(%.2f,%.2f)-->R(%.2f + %.2fj)",a,b,c,d);
  9.  
  10. }

Etiquetas: funcion, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:30.