¿Cómo puedo traducir el código del problema de las nueve reinas implementado en C a Visual Basic?

Tengo un pequeño gran problema
Necesito pasar este código de c a visual basic pero ay algunas cosas que no se como representarlas en VB.
#include <stdio.h>
enum bool {FALSE, TRUE};
typedef enum bool boolean;
void ensayar(int i, boolean *q, int col[], boolean fila[], boolean diagb[], boolean diagc[]);
int main(void)
{
int i;
boolean q;
int col[8];
boolean fila[8],diagb[15], diagc[15];
for (i = 0; i < 8; i++) fila = TRUE;
for (i = 0; i < 15; i++) diagb = diagc = TRUE;
ensayar(0,&q,col,fila,diagb,diagc);
if (q) {
printf("
Solucion:");
for (i = 0; i < 8; i++) printf(" %d", col);
} else printf("
No hay solucion");
return 0;
}
void ensayar(int i, boolean *q, int col[], boolean fila[], boolean diagb[], boolean diagc[])
{
int j;
j = 0;
*q = FALSE;
do {
if (fila[j] && diagb[i+j] && diagc[7+i-j]) {
col = j; fila[j] = diagb[i+j] = diagc[7+i-j] = FALSE;
if (i < 7) { /* encuentra solucion? */
ensayar(i+1,q,col,fila,diagb,diagc);
if (!*q)
fila[j] = diagb[i+j] = diagc[7+i-j] = TRUE;
} else *q = TRUE; /* encuentra la solucion */
}
j++;
} while (!*q && j < 8);
}
Me puedes ayudar a descifrar este código perteneciente al problema de las 8 reinas

1 respuesta

Respuesta
1
Trate de interpretar el código lo que más pude.
Averigua sobre el trabajo de los punteros en visual basic, porque casi no se usan.
Por otro lado trate de hacer lo que pude.
Cualquier duda...
Acá esta el código
es el form y un boton command que lo ejecuta correlo con f8 para que sigas toda la linea
===========================
Dim v_col(8) As Integer
Dim v_fila(8) As Boolean
Dim v_diagb(15) As Boolean
Dim v_diagc(15) As Boolean
Dim q As Boolean
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To 8
v_fila(i) = True
Next i
For e = 0 To 15
v_diagb(e) = True
v_diagc(e) = True
Next e
Call ensayar(0, False)
If q Then
MsgBox "Solucion: "
For i = 0 To 8
MsgBox (v_col(i))
Next i
Else
MsgBox "No hay Solución"
End If
End Sub
Public Sub ensayar(i As Integer, q As Boolean)
Dim j As Integer
q = False
While q = False And j < 8 ' no entiendo la parte !*q piense que q es false
'en visual basic casi no se usan o mejor dicho no se usan los punteros
If v_fila(j) And v_diagb(i + j) And v_diagc(7 + i - j) Then
v_col(i) = j
v_fila(j) = False
v_diagb(i + j) = False
v_diagc(7 + i - j) = False
If i < 7 Then
Call ensayar(i + 1, q)
If q = False Then 'no se bien que significa el signo !
v_col(i) = j
v_fila(j) = True
v_diagb(i + j) = True
v_diagc(7 + i - j) = True
End If
End If
Else
q = True
End If
j = j + 1
Wend
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas