1000000000000001000
0011111111111100011
1111111111111111111
0001000100011111111
1110010001011000001
0001111110100011100
1100001111000101010
0001100000010111111
0110011111010101010
0000111111110000000
1111111111111111111
0001011111111111111
1100011111111111111
1111110000000000000
0010000111111111111
1000111111111111111
1111111111100001111
0000000000001100000
1111111111110001111
1000000000000111111
#include <stdio.h>
#include <stdlib.h>
#include <conio2.h> //para compilarla hay que instalar la libreria conio.h y despues ir a herramientas, opciones de compilador, añadir estos comandos a la linea de comandos linker y escribir -lconio
#define columna 19 //se definen variables globales para hacer uso en cualquier parte del programa sin problema (incluso en funciones)
#define fila 20 //se definen variables globales para hacer uso en cualquier parte del programa sin problema (incluso en funciones)
int i = 0, j = 0;
int arreglo[fila][columna];
int contador1 = 0, contador2 = 0, contadorcero = 0; // contador1 es el numero de direcciones, contador2 sirve como bandera para el do, contadorcero sirve para determinar el numero de pasadas
char b;
main(){
textcolor(10); //modifica el color de las letras
textbackground(0); //modifica el color de fondo
// va a leer el archivo y lo que encuentre lo va a guardar en la matriz
FILE *pf;
if(( pf = fopen("laberinto.txt","r")) == NULL )
printf("nNo esta el archivo !"); // se imprime esto si el archivo txt no esta en la misma carpeta que el programa
else
do{ // como while valida la condicion antes de ejecutar no toma la ultima posicion del arreglo, por eso se reemplaza por do while que ejecuta la accion y luego valida tomando asi el ultimo valor del arreglo
fscanf(pf,"%c",&b);
if( b == '0' ){
arreglo[j] = 0;
i=i+1;
contadorcero=contadorcero+1;
}
else{
arreglo[j] = 1;
i=i+1;;
}
if( i >= columna + 1 ){
j=j+1;
i = 0;
}
}while( !feof(pf)); //funcion (de manejo de archivos) retorna verdadero cuando llega al final del archivo, como esta negado cuando llege al final retornara falso y terminara el ciclo
fclose(pf);
system("cls");
contadorcero = contadorcero/3; // Determina el numero de pasadas
// Aqui es donde elimina los caminos hasta llegar al mas optimo
do{
for( j = 1; j < fila-1; j++ ){
for( i = 1; i < columna-1; i++){
if( arreglo[j] == 0 ){
if( arreglo[j][i-1] == 0 )
contador1=contador1+1;
if( arreglo[j-1] == 0 )
contador1=contador1+1;
if( arreglo[j][i+1] == 0 )
contador1=contador1+1;
if( arreglo[j+1] == 0 )
contador1=contador1+1;
}
if( contador1 < 2 )
arreglo[j] = 1;
contador1=0;
}
}
contador2=contador2+1;
}while( contador2 < contadorcero );
// Muestra el resultado
for( j = 0; j < fila; j++ ){
for( i = 0; i < columna; i++){
if(arreglo[j] == 0){
gotoxy( i+1,j+1); //es una funcion de <conio2.h> y se usa para posicionar en unas cordenadas lo que se imprime
cprintf(" "); //imprime la letra con el color definido anteriormente
}
else{
gotoxy( i+1,j+1); //es una funcion de <conio2.h> y se usa para posicionar en unas cordenadas lo que se imprime
cprintf("Û"); //imprime la letra con el color definido anteriormente
}
}
}
getch(); // usado para leer el archivo
getch(); // usado para leer el archivo
}