Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con estructuras en C

Estas en el tema de Problema con estructuras en C en el foro de Programación General en Foros del Web. Hola amigos, lo primero presentarme pues soy nuevo aquí: me llamo jose y tengo un pequeño gran problema con un programa en C. Os explico: ...
  #1 (permalink)  
Antiguo 07/04/2008, 07:02
 
Fecha de Ingreso: abril-2008
Mensajes: 2
Antigüedad: 16 años
Puntos: 0
Problema con estructuras en C

Hola amigos, lo primero presentarme pues soy nuevo aquí: me llamo jose y tengo un pequeño gran problema con un programa en C.

Os explico:

Tengo definidas una serie de structuras de forma global el formato de una de estas estructuras es la siguiente:


typedef struct sRuta{
int numNodos;
int fitness;
int *vecino;
struct sRuta *next_ruta;
}LISTA_rutas;

Como podeis ver, esta estructura es una lista en lazada para almacenar una serie de rutas.

Por otro lado, en una de las funciones de las que se compone el siguiente programa hago la siguiente llamada a una función:

struct LISTA_rutas* macho;
macho = (LISTA_rutas*)creaNodo_ruta(inicio, inicioNodos, nDestino);

AHORA OS PONGO EL CODIGO DE LA FUNCION creaNodo_ruta:

struct LISTA_rutas *creaNodo_ruta(struct sNodo* inicio, struct sNodo* inicioNodos/*para mantener el comienzo del array*/, int nDestino)
{
int recorrido_v;
int sw_vec_directo = 0;
unsigned long siguiente;
sNodo *aux_ruta;

aux_ruta = inicio;
ruta = (struct sRuta*)malloc(sizeof(struct sRuta));

if (ruta == NULL)
printf ("NO TIRA");

ruta->numNodos = 1;
ruta->fitness = 0;
ruta->vecino = (int*)malloc(sizeof(int));
ruta->vecino[ruta->numNodos - 1] = inicio->nodoId;
while(aux_ruta->nodoId != nDestino)
{
ruta->numNodos++;
siguiente = (unsigned short)((rand()/(float)RAND_MAX)*aux_ruta->nEnlaces);
for (recorrido_v=0;recorrido_v<inicio->nEnlaces;recorrido_v++)
{
if(inicio->vecino[recorrido_v] == nDestino)
{
sw_vec_directo = 1;
siguiente = nDestino;
break;
}


}
if(sw_vec_directo == 0)
siguiente = aux_ruta->vecino[siguiente];

ruta->vecino = (int*)realloc(ruta->vecino, ruta->numNodos*sizeof(int));
ruta->vecino[ruta->numNodos-1] = siguiente;

aux_ruta = inicioNodos;

while (aux_ruta->nodoId != siguiente)
{

aux_ruta = aux_ruta->next;

}

}

ruta->next_ruta = NULL;

Calcular_ruta_equivalente (ruta);

return(ruta);


}

---------------------------------------------------------------------------------------

Tras esta llamada trato de acceder a los campos de la estructura LISTA_rutas *macho de la siguiente forma:

fitness_min_macho = macho->numNodos;

Al complilar me da los siguientes errores:

C:\Documents and Settings\aaa\Escritorio\PFC2\CODIGO\final.cpp(240) : error C2027: use of undefined type 'LISTA_rutas'
C:\Documents and Settings\aaa\Escritorio\PFC2\CODIGO\final.cpp(22) : see declaration of 'LISTA_rutas'
C:\Documents and Settings\aaa\Escritorio\PFC2\CODIGO\final.cpp(240) : error C2227: left of '->numNodos' must point to class/struct/union

Y no se por qué pasa.... ME dice que no tengo definido el tipo LISTA_rutas y que macho debe ser un puntero para utilizar el operador ->......

Si alguien puede echarme una mano se lo agradecería eternamente!!!!!!!!
Muchas Gracias de antemano!

Un saludo!!!!!!!!!!!!
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 01:05.