Visual Basic - Backtracking / algoritmo caballo / C to Visual

Life is soft - evento anual de software empresarial
 
Vista:

Backtracking / algoritmo caballo / C to Visual

Publicado por CraWler (1 intervención) el 27/10/2002 17:35:50
Hola, tengo el siguiente código en C que muestra la resolución del algoritmo del caballo... usando backtracking, ahora necesito pasarlo a Visual Basic v.X, pero el caso es que estoy teniendo unos absurdos problemas... si alguien me hecha un cable se lo agradeceré eternamente. Thanx.

#include <stdio.h>

#define N_CUADROS 8
#define N_SALTOS 8
#define CIERTO 1
#define FALSO 0

static int tablero_virtual[N_CUADROS+4][N_CUADROS+4];
static int dx[N_SALTOS]={ 2, 1,-1,-2,-2,-1, 1, 2};
static int dy[N_SALTOS]={ 1, 2, 2, 1,-1,-2,-2,-1};

static void inicia_tablero(void);
void presenta_tablero(void);
static int ensaya_movimiento(int n,int x,int y);

int main(void)
{

inicia_tablero();
printf("\ncalculando, espere por favor\n");
if(ensaya_movimiento(1,2,2))
printf("Resultado:");
else
printf("No hay soluci¢n");
presenta_tablero();
return 0;
}

static void inicia_tablero(void)
{
int i,j;
for(i=0;i<N_CUADROS+4;i++) {
for(j=0;j<N_CUADROS+4;j++) {
if(i>1 && i<N_CUADROS+2 && j>1 && j<N_CUADROS+2 )
tablero_virtual[i][j]=0;
else
tablero_virtual[i][j]=-1;
}
}

}

void presenta_tablero(void)
{
int i,j;

for(i=0;i<N_CUADROS+4;i++) {
printf("\n");
for(j=0;j<N_CUADROS%2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Backtracking / algoritmo caballo / C to Visual

Publicado por maCo (53 intervenciones) el 28/10/2002 05:18:21
Creo que el codigo esta incompleto, mandamelo a mi email y te ayudo con la traduccion de C a VB.

mi correo es [email protected]

Chao
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Backtracking / algoritmo caballo / C to Visual

Publicado por CraWler (1 intervención) el 29/10/2002 21:17:18
GRacias, sí me di cuenta justo después de pegar el source en C pero por la perrería de no mandarlo otra vez... jeje; me imaginé que os imaginariáis la recursividad (el resto del source), en todo caso ya he solucionado el problema, lo tenía todo pasado pero me petada porque el visual no ejecuta el "return" de C cuando le dice funcion=(valor_retorno)... le pasaba el valor de retorno pero no retornaba (IP de assembler jeje) y como depurar una función recursiva es casi imposible pues no caí... espero que la experiencia ayuda a alguien jeje os pego la resolucíon en VB:

Public Function ensaya_movimiento(n As Integer, x As Integer, y As Integer) As Integer 'static ?
Dim i As Integer
Dim u As Integer
Dim v As Integer

tablero_virtual(x, y) = n
If (n = (N_CUADROS * N_CUADROS)) Then
ensaya_movimiento = CIERTO '1
Exit Function
Else

For i = 0 To (N_SALTOS - 1)
u = x + dx(i)
v = y + dy(i)
If (tablero_virtual(u, v) = 0) Then
If (ensaya_movimiento((n + 1), u, v)) Then
ensaya_movimiento = CIERTO
Exit Function ' ESTO ES OBLIGATORIO PARA QUE SALGA BIEN!!!!
End If
End If
Next i

End If
tablero_virtual(x, y) = 0
ensaya_movimiento = FALSO
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar