29/05/2006, 19:15
|
| | Fecha de Ingreso: abril-2006 Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses Puntos: 2 | |
Tu programa esta casi perfecto........... Primero con respecto a los typedef.
C te da la libertad de usarlo como estructuras al estilo C, o crear seudonimos como si fuesen tipos.
y la forma mas tradicional es:
typedef struct _Nodo
{
}TipoNodo;
Pero al final eres libre de usar tu estilo.
En relacion a malloc por mucho que C, te permita usarlo sin casting explicito, es bueno hacerlo para mostrar lo que quieres hacer realmente.(Como si se comentara el codigo).
En relacion a tu programa tienes 2 o 3 errorsillos.
el primero es este:
nuevo->tiempo_paso[l->num] = a.info.tiempo_paso;
estas asiendo una asignacion de un miembro de Registro a un miembro de nodo, ademas de que EL TipoNodo no tienen un miembro tiempo_paso, el miembro array es tiempos.
Yo lo modifique a :
nuevo->tiempos[l->num] = a.info.tiempo_paso; para poderlo compilar.
no se si este correcto ono, de pende del proposito.
eso lo corriges tú.
EL segundo error esta aqui:
nuevo->tiempos[l->num] = a.info.tiempo_paso;
el miembro de tipoNodo tiempos es un array de un determinado numero de indices en este caso 9, la propiedad de lista num, no esta inicializado, por tanto puede tener un numero mayor a nueve y esto te proboca un error de acceso.
lo que yo hice fue usar la funcion CrearListaVacia.
CrearListaVacia(&lista );
Con esto me aseguro de que la propiedad num de lista es 0.
(Para que implementas esta funcion si no la usas???).
Hay un 3er error:
En MostrarCorredor:
printf("%f ",c.tiempos[l.num]);
se supone que esta funcion la usaras despues de haber insertado.
Entonces la propiedad num de lista se habra incrementado a un nodo vacio.
por tanto c.tiempos(l.num] tiene un valor cualquiera, que no es el que esperas(Supongo).
YO hice:
printf("%f ",c.tiempos[l.num-1]);
Pero esto dependera de tus requerimientos.
Bueno eso es lo pude ver, en tu codigo.
Saludos. |