elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda para resolver el programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para resolver el programa  (Leído 4,332 veces)
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda para resolver el programa
« Respuesta #10 en: 27 Marzo 2017, 20:48 pm »

quien es xc y yc? los sumas, pero no los asignas


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda para resolver el programa
« Respuesta #11 en: 27 Marzo 2017, 21:09 pm »

Esto seria correcto para obtener las posiciones cartesianas x e y de cada vertice del poligono en un plano?

alpha = 360 / cantidad de lados del poligono
radian = 180/PI 
xc + radio*cos(angulo/radian)
yc + radio*sin(angulo/radian)
angulo = angulo+alpha

Es correcto. Y aquí es donde entra la parte de programación. Tienes que sacar N vértices, no 1. Así que tendrás que hacer esas ecuaciones N veces (bucle for).

Código
  1. angulo = angulo+alpha;
Haces eso tras cada cálculo, y calculas el siguiente, sin más. Ya lo tienes.

Como detalle, las funciones cos() y sin() son de la librería <math.h>. A parte de eso, no deberías tener más problemas.
Haz el programa, y si te encuentras con algún otro problema, coméntalo y pasa el código.

Por cierto, los códigos ponlos en las etiquetas GeSHi (al hacer el mensaje, tienes arriba para colocarlas)


En línea

petit_cm

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda para resolver el programa
« Respuesta #12 en: 30 Marzo 2017, 17:00 pm »

He hecho esta función para calcular la coordenadas x e y de los vértices, pero no funciona y se que no esta bien hecha, me podéis ayudar a corregir los errores o decirme lo que falte? Muchas gracias

v[0]  es la coordenada x del centro, v[1]  es la coordenada y del centro, v[2] el radio y t el numero de lados.
Programa hecho en lenguaje C

Código
  1. void vertices(double *v, double *res, int t){
  2. int i;
  3.  
  4. double angulo;
  5. angul==0;
  6.  
  7. double alpha;
  8. alpha==360/ t;
  9.  
  10. double radian;
  11. radian=180/3.1416;
  12.  
  13. for(i=0;i<t; i=i+1){
  14.  
  15. res[i]= v[0]+v[2]*cos(angulo/radian);
  16. angulo=angulo + alpha;
  17.  
  18. }
  19. for(i=0;i<t; i=i+1){
  20.  
  21. res[i]= v[1]+v[2]*sin(angulo/radian);
  22. angulo=angulo + alpha;
  23.  
  24. }
  25.  
  26.  
« Última modificación: 30 Marzo 2017, 17:02 pm por petit_cm » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda para resolver el programa
« Respuesta #13 en: 30 Marzo 2017, 22:48 pm »

Varios detalles...
En primer lugar, trata de ver los errores que te da el compilador, para corregir lo más básico:

Pusiste angul en evz de angulo en la línea 5.
Luego, pusiste angulo==0;. Eso no es una asignación, eso es una comparación. Una asignación es, como pusiste en los fors, 1 solo signo igual:
Código
  1. angulo = 0;
Lo mismo en la línea 8.

Luego... ¿Cómo quieres que sea la respuesta?
En primer lugar, voy a suponer que a la función le pasas un array double* ya lleno y de tamaño t*2. Presupondré también que la respuesta es {x1, y1, x2, y2,... xN, yN}. Fíjate que en el segundo for, estás sobreescribiendo el array (por tanto, deshaciendo el trbaajo dle primer for).

Tal vez quisieras algo así (con 1 for te llega):
Código
  1. for(i=0;i
En línea

petit_cm

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda para resolver el programa
« Respuesta #14 en: 30 Marzo 2017, 22:52 pm »

Mi programa es este, consigo obtener un vertice, pero los valores x e y de este no son correctos y no consigo que muestre en pantalla todos los vertices, solo muestra uno, el primero. Hasta la linia 75 funciona correctamente.  A partir de ahi no se obtiene el resultado deseado.

Código
  1.  
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <math.h>
  7.  
  8. #define TAM 100
  9.  
  10. // Prototipos de las funciones
  11. int leeIVector(int *v, int max);
  12. int leeDVector(double *v, int max);
  13. int leeIVector2(int *v, int max);
  14. int leeDVector2(double *v, int max);
  15. void escIVector(int *v, int l);
  16. void escDVector(double *res,double *ress, int t);
  17. void vertices(double *v, double *res, int t);
  18. void vertices2(double *v, double *ress, int t);
  19.  
  20.  
  21. //Funcion main
  22. int main()
  23. {
  24. int l, v[100];
  25. double vd[100];
  26. double res[100];
  27. double ress[100];
  28. double x;
  29.  
  30.  
  31. // Hacemos los mismo con el de reales
  32. l = leeDVector2(vd, 100);
  33.  
  34. vertices(vd,res, l);
  35.  
  36. vertices2(vd,ress,1);
  37.  
  38. escDVector(res,ress,1);
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. // Nada puede ir mal
  47. exit(EXIT_SUCCESS);
  48. }
  49.  
  50. //Funcion para introducir datos
  51. int leeDVector2(double *v, int max)
  52. {
  53. char aux[200];
  54. int t;
  55.  
  56. printf("Introduce la coordenada x del punto:");
  57. fgets(aux, TAM - 1, stdin);
  58. v[0] = atof(aux);
  59.  
  60. printf("Introduce la coordenada y del punto:");
  61. fgets(aux, TAM - 1, stdin);
  62. v[1] = atof(aux);
  63.  
  64. printf("Introduce el radio:");
  65. fgets(aux, TAM - 1, stdin);
  66. v[2] = atof(aux);
  67.  
  68. printf("Introduce numero de lados:");
  69. fgets(aux, TAM - 1, stdin);
  70. t = atof(aux);
  71.  
  72.  
  73. return t;
  74. }
  75.  
  76. //Funcion calculo vertices
  77.  
  78. void vertices(double *v, double *res, int t){
  79. int i;
  80.  
  81. double angulo;
  82.  
  83.  
  84. double alpha;
  85. alpha=360/ t;
  86.  
  87. double radian;
  88. radian=180/3.1416;
  89.  
  90. double cos(double x);
  91.  
  92. for(i=0;i<t; i=i+1){
  93.  
  94. res[i]= v[0]+v[2]*cos(angulo/radian);
  95.  
  96. angulo=angulo +alpha;
  97. }
  98. }
  99.  
  100. void vertices2(double *v, double *ress, int t){
  101. int i;
  102.  
  103. double angulo;
  104.  
  105.  
  106. double alpha;
  107. alpha=360/ t;
  108.  
  109. double radian;
  110. radian=180/3.1416;
  111.  
  112. double sin(double x);
  113.  
  114. for(i=0;i<t; i=i+1){
  115.  
  116. ress[i]= v[0]+v[2]*sin(angulo/radian);
  117.  
  118. angulo=angulo +alpha;
  119.  
  120. }
  121. }
  122.  
  123. //Imprimir
  124.  
  125. void escDVector(double *res,double *ress, int t)
  126. {
  127. int i;
  128.  
  129. printf("\n\nVector con %d elementos:\n\n", t);
  130. for (i = 0; i < t; i++)
  131. printf("Elemento %d: %lf %lf\n", i + 1, res[i],ress[i]);
  132.  
  133. puts("\n"); // Lineas en blanco para que sea mas legible
  134. }
  135.  
  136.  
  137.  
« Última modificación: 30 Marzo 2017, 23:06 pm por petit_cm » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda para resolver el programa
« Respuesta #15 en: 31 Marzo 2017, 00:09 am »

Salió cortado mi mensaje anterior :X

Código
  1. for(i=0; i < t; i=i+1){
  2.  
  3. res[i*2]= v[0]+v[2]*cos(angulo/radian);
  4. res[i*2 + 1]= v[1]+v[2]*sin(angulo/radian);
  5. angulo=angulo + alpha;
  6.  
  7. }

Y conrespecto a tu código de ahora... Donde calculas el Y, pusiste v[0] en vez de v[1].
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema para resolver en el programa de jdeveloper.
Java
sheylacris 3 3,828 Último mensaje 1 Enero 2010, 02:45 am
por Leyer
Ayuda para resolver dos funciones
Programación C/C++
fupro 2 2,570 Último mensaje 8 Junio 2010, 15:45 pm
por nicolas_cof
Ayuda para Resolver 9 consultas
Bases de Datos
Anonymous250 0 3,757 Último mensaje 15 Enero 2012, 18:00 pm
por Anonymous250
Ayuda en resolver codigo
Programación C/C++
Orlando.64 2 3,876 Último mensaje 10 Octubre 2020, 07:00 am
por Loretz
ayuda urgente para resolver este programa|
Java
deank23 3 2,784 Último mensaje 29 Noviembre 2020, 16:40 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines