Autor
|
Tema: Ayuda para resolver el programa (Leído 4,332 veces)
|
engel lex
|
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
Mensajes: 3.412
ASMático
|
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). 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
Mensajes: 7
|
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 void vertices(double *v, double *res, int t){ int i; double angulo; angul==0; double alpha; alpha==360/ t; double radian; radian=180/3.1416; for(i=0;i<t; i=i+1){ res [i ]= v [0]+v [2]*cos(angulo /radian ); angulo=angulo + alpha; } for(i=0;i<t; i=i+1){ res [i ]= v [1]+v [2]*sin(angulo /radian ); angulo=angulo + alpha; }
|
|
« Última modificación: 30 Marzo 2017, 17:02 pm por petit_cm »
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
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: 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): for(i=0;i
|
|
|
En línea
|
|
|
|
petit_cm
Desconectado
Mensajes: 7
|
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. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define TAM 100 // Prototipos de las funciones int leeIVector(int *v, int max); int leeDVector(double *v, int max); int leeIVector2(int *v, int max); int leeDVector2(double *v, int max); void escIVector(int *v, int l); void escDVector(double *res,double *ress, int t); void vertices(double *v, double *res, int t); void vertices2(double *v, double *ress, int t); //Funcion main int main() { int l, v[100]; double vd[100]; double res[100]; double ress[100]; double x; // Hacemos los mismo con el de reales l = leeDVector2(vd, 100); vertices(vd,res, l); vertices2(vd,ress,1); escDVector(res,ress,1); // Nada puede ir mal } //Funcion para introducir datos int leeDVector2(double *v, int max) { char aux[200]; int t; printf("Introduce la coordenada x del punto:"); fgets(aux , TAM - 1, stdin ); printf("Introduce la coordenada y del punto:"); fgets(aux , TAM - 1, stdin ); printf("Introduce el radio:"); fgets(aux , TAM - 1, stdin ); printf("Introduce numero de lados:"); fgets(aux , TAM - 1, stdin ); return t; } //Funcion calculo vertices void vertices(double *v, double *res, int t){ int i; double angulo; double alpha; alpha=360/ t; double radian; radian=180/3.1416; for(i=0;i<t; i=i+1){ res [i ]= v [0]+v [2]*cos(angulo /radian ); angulo=angulo +alpha; } } void vertices2(double *v, double *ress, int t){ int i; double angulo; double alpha; alpha=360/ t; double radian; radian=180/3.1416; for(i=0;i<t; i=i+1){ ress [i ]= v [0]+v [2]*sin(angulo /radian ); angulo=angulo +alpha; } } //Imprimir void escDVector(double *res,double *ress, int t) { int i; printf("\n\nVector con %d elementos:\n\n", t ); for (i = 0; i < t; i++) printf("Elemento %d: %lf %lf\n", i + 1, res [i ],ress [i ]); puts("\n"); // Lineas en blanco para que sea mas legible }
|
|
« Última modificación: 30 Marzo 2017, 23:06 pm por petit_cm »
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Salió cortado mi mensaje anterior :X for(i=0; i < t; i=i+1){ res [i *2]= v [0]+v [2]*cos(angulo /radian ); res [i *2 + 1]= v [1]+v [2]*sin(angulo /radian ); angulo=angulo + alpha; }
Y conrespecto a tu código de ahora... Donde calculas el Y, pusiste v[0] en vez de v[1].
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
problema para resolver en el programa de jdeveloper.
Java
|
sheylacris
|
3
|
3,828
|
1 Enero 2010, 02:45 am
por Leyer
|
|
|
Ayuda para resolver dos funciones
Programación C/C++
|
fupro
|
2
|
2,570
|
8 Junio 2010, 15:45 pm
por nicolas_cof
|
|
|
Ayuda para Resolver 9 consultas
Bases de Datos
|
Anonymous250
|
0
|
3,757
|
15 Enero 2012, 18:00 pm
por Anonymous250
|
|
|
Ayuda en resolver codigo
Programación C/C++
|
Orlando.64
|
2
|
3,876
|
10 Octubre 2020, 07:00 am
por Loretz
|
|
|
ayuda urgente para resolver este programa|
Java
|
deank23
|
3
|
2,784
|
29 Noviembre 2020, 16:40 pm
por Serapis
|
|