10000000000000010000011111111111100011111111111111111111100010001000111111111110010001011000001000111111010001110011000011110001010100001100000010111111011001111101010101000001111111100000001111111111111111111000101111111111111111000111111111111111111110000000000000001000011111111111110001111111111111111111111111100001111000000000000110000011111111111100011111000000000000111111
#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 pasadaschar 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 matrizFILE *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}