Estoy trabajando un algoritmo de búsqueda por profundidad, pero cunado compilo no me correo el programa e identifique que la linea q me esta causando el error es esta:
Código C:
Ver originalstrcpy(cualquier_lugar
,vuelos
[encuentra_pos
].
hacia); //--> AQUI SE TOTEA
Les dejo todo el código, gracias
Código C:
Ver original#define MAX 100
/*Estructura de la Base de Datos*/
struct VL{
char desde[20];
char hacia[20];
int distancia;
char visitado;
};
struct VL vuelos[MAX]; /*Arreglo que contiene la estructura descrita anteriormente*/
int pos_ult=0; /*Ultimo elemento de la BBDD*/
int encuentra_pos=0; /*Indice de la Busqueda*/
void inicia(){
declara_vuelo("Nueva York","Chicago",1000);
declara_vuelo("Chicago","Denver",1000);
declara_vuelo("Nueva York","Toronto",800);
declara_vuelo("Toronto","Calgary",1500);
declara_vuelo("Toronto","Los Angeles",1800);
declara_vuelo("Toronto","Chicago",500);
declara_vuelo("Denver","Urbana",1000);
declara_vuelo("Denver","Houston",1500);
declara_vuelo("Houston","Los Angeles",1000);
declara_vuelo("Denver","Los Angeles",1000);
}
/*Llenamos la BBDD*/
void declara_vuelo(desde,hacia,dist)
char *desde,*hacia;
int dist;
{
if(pos_ult<MAX){
strcpy(vuelos
[pos_ult
].
desde,desde
); strcpy(vuelos
[pos_ult
].
hacia,hacia
); vuelos[pos_ult].distancia=dist;
vuelos[pos_ult].visitado=0;
pos_ult++;
}
else printf("Base de Datos LLena \n"); }
/*
* Esta funcion calcula si hay una ruta directa en tre dos ciudades,
* si hay conexion devuelve la distacia, sino devuelve 0 (cero)
*/
int unidas(desde,hacia)
char *desde,*hacia;
{
register int t;
// La palabra clave register es un especificador de tipo de almacenamiento
// ("storage class specifier"); se utiliza para indicar al compilador que
// ciertas variables (normalmente del tipo int y char) deben ser almacenadas
// en los registros del procesador en lugar de la pila
for(t=pos_ult-1; t>-1; t--)
if(!strcmp(vuelos
[t
].
desde,desde
)&&!strcmp(vuelos
[t
].
hacia,hacia
)) return vuelos
[t
].
distancia;
return 0;
}
/*
* Esta Funcion busca si la ciudad desde tiene conexion con cualquier ciudad
* si la encuentra retornara la distacia y sino retornara cero
*/
int encuentra(desde,cualquier_lugar)
char *desde, *cualquier_lugar;
{
encuentra_pos=0; // Varible Global
while(encuentra_pos<pos_ult){
if(!strcmp(vuelos
[encuentra_pos
].
desde,desde
)&&!vuelos
[encuentra_pos
].
visitado){ strcpy(cualquier_lugar
,vuelos
[encuentra_pos
].
hacia); //--> AQUI SE TOTEA printf("%c",cualquier_lugar
[0]); printf("%c",cualquier_lugar
[1]); printf("%c \n",cualquier_lugar
[2]); printf("%c",vuelos
[encuentra_pos
].
hacia[0]); printf("%c",vuelos
[encuentra_pos
].
hacia[1]); printf("%c \n",vuelos
[encuentra_pos
].
hacia[2]); /*vuelos[encuentra_pos].visitado = 1; /*Se Activa*/
return vuelos[encuentra_pos].distancia;
}
encuentra_pos++;
}
return 0;
}