muchas gracias ivancea96 , do-while!!. Esas variables estaban un poco alpedo. Ahora modularice un poco y me quedo esto:
Se ejecuta bien, pero me llama un poco la atención que ningun intento supere de los 15 o 17 movimientos.
No había modularizado antes por que no sabía pasar matrices a la función xD.
Código [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#define LIMITE 8
#define LONG 100
void mostrar(int matriz[][LIMITE]);
void inicializar(int matriz[][LIMITE]);
int ejex(int x);int ejey(int y);
int mover(int y, int x, int matriz[][LIMITE]);
int main()
{
int tablero[LIMITE][LIMITE];
int caminos[LONG]={0};
int x, y, i;
srand(time(NULL));
scanf("%d", &x);
scanf("%d", &y);
for (i= 1; i <= LONG; i++) {
inicializar(tablero);
tablero[y][x]= 1;
caminos[i-1]= mover(y, x, tablero);
}
printf("Intento distancia\n");
for (i=0; i < LONG; i++)
printf("%d\t\t%d\n", i+1, caminos[i]);
mostrar(tablero);
system("PAUSE");
return 0;
}
void inicializar(int matriz[][LIMITE])
{
int i, j;
for (i= 0; i < LIMITE; i++){
for (j= 0; j < LIMITE; j++)
matriz[i][j]= 0;
}
return;
}
int ejey(int y)
{
int fila[LIMITE]={2,1,-1,-2,-2,-1,1,2};
return fila[y];
}
int ejex(int x)
{
int columna[LIMITE]={-1,-2,-2,-1,1,2,2,1};
return columna[x];
}
int mover(int y, int x,int matriz[][LIMITE])
{
int sepuede= 1;
int elegido, fx, fy;
int contador= 0;
fy= y;
fx= x;
while (sepuede == 1) {
elegido= rand()% 7;
fx+= ejex(elegido);
fy+= ejey(elegido);
if ((fx < 0) || (fx > 7))
sepuede= 0;
else {
if ((fy < 0) || ( fy > 7))
sepuede= 0;
else {
matriz[fy][fx]= 1;
contador+= 1;
}
}
}
return contador;
}
void mostrar(int matriz[][LIMITE])
{
int i,j;
for (i= 0; i < LIMITE; i++){
for (j= 0; j < LIMITE; j++)
printf("%d ", matriz[i][j]);
printf("\n");
}
return;
}
Se ejecuta bien, pero me llama un poco la atención que ningun intento supere de los 15 o 17 movimientos.
No había modularizado antes por que no sabía pasar matrices a la función xD.