[ Foro de Pascal ]
buenas profesor nacho y profesor luis,
estuve revizando un programa que esta en un link de un par de meses titullado
Proyecto de Programacion, Duda respecto a como entender el problema
queria preguntarles como se hace el vuelco que el profesor nacho sugiere , si pudieran orientarme con un ejemplo en codigo me seria de gran ayuda.
bien ahora no entiendo lo que dices luis de crear un menu , parece como complejo o no se si no te entiendo lo que insinuas que se haga, si puedes ampliar un poco as sobre ello te lo agradezco.
¿Te refieres a este hilo?
http://www.aprendeaprogramar.com/mod/forum/discuss.php?d=1899
Hola profesor nacho, efectivamente me refiero a ese link, cualuir orientacion adicional muy agredecido
Yo sugerí crear un menú para que el usuario pueda escoger entre una torre, un alfil, un caballo o salir del programa. De esta manera podrá elegir la pieza a utilizar y luego, el tipo de movimiento (hacia arriba, abajo, izquierda o derecha), además podrá especificar la fila y la columna en la que arranca el movimiento y finalmente el número de caracteres a consultar. Si incluimos el menú entre un repeat-until podremos ejecutar nuestro programa tantas veces como queramos, para salir simplemente seleccionamos la opción correspondiente. Como ves es muy útil y cómodo para el que ejecute este programa, se harán tantos intentos como que se quiera, ir probando poco a poco, hasta encontrar la palabra deseada si es que existe. He elaborado un código con un menú, pero solo funciona para la pieza Torre y el movimiento hacia arriba. Si se quiere buscar la palabra "CABALLO", tendrás que seleccionar la pieza torre, fila 7, columna 1, hacia arriba (1) y 7 caracteres. Haz la prueba y verás. A continuación te dejo el código para que lo examines, como tarea te dejo resolver el ejercicio para los movimientos restantes de la torre, y para todos los movimientos del alfil y del caballo. Saludos y espero que te sirva de ayuda. El programa tiene fallas de validación de las entradas, por lo que deberás tener mucho cuidado en elegir correctamente la fila, la columna, el número de caracteres y la dirección del movimiento, de manera que al realizar el movimiento no se quede fuera del tablero, por ejemplo si el tablero contiene 7 caracteres a lo largo y ancho ten cuidado en no elegir una cantidad superior a este número, así como no comenzar en una fila o columna que junto a esta cantidad quedes fuera de la grilla.
program sopaDeLetrasCompleto;
uses CRT;
const var1: string[12] = 'ORMROG';
var2: string[12] = 'LETORT';
var3: string[12] = 'LIORRE';
var4: string[12] = 'AANIER';
var5: string[12] = 'BAUOYE';
var6: string[12] = 'ASNOEP';
var7: string[12] = 'CLIFLA';
var
i,j, opc: integer;
procedure MovimientoDeTorre;
var
fila, columna, direccion, cantidad: integer;
procedure RecorridoArriba;
var i: integer;
Begin
for i:=fila downto fila - cantidad + 1 do
begin
case i of
1: write(var1[columna]);
2: write(var2[columna]);
3: write(var3[columna]);
4: write(var4[columna]);
5: write(var5[columna]);
6: write(var6[columna]);
7: write(var7[columna]);
end;
end;
write(', trayectoria de torre');
writeln;
for i:=fila downto fila - cantidad + 1 do
begin
case i of
1: writeln('var1[',columna,']');
2: writeln('var2[',columna,']');
3: writeln('var3[',columna,']');
4: writeln('var4[',columna,']');
5: writeln('var5[',columna,']');
6: writeln('var6[',columna,']');
7: writeln('var7[',columna,']');
end;
end;
End;
procedure RecorridoAbajo;
Begin
writeln('Procedimiento en construccion.');
End;
procedure RecorridoIzquierda;
Begin
writeln('Procedimiento en construccion.');
End;
procedure RecorridoDerecha;
Begin
writeln('Procedimiento en construccion.');
End;
Begin
write('Deme la fila: '); readln(fila);
write('Deme la columna: '); readln(columna);
write('Indique la direccion - Hacia 1-Arriba 2-Abajo 3-Izquierda 4-Derecha: '); readln(direccion);
write('Deme la cantidad de letras: '); readln(cantidad);
case direccion of
1: RecorridoArriba;
2: RecorridoAbajo;
3: RecorridoIzquierda;
4: RecorridoDerecha;
end;
readln;
End;
procedure MovimientoDeAlfil;
Begin
writeln('Este es el movimimento del Alfil');
readln;
End;
procedure MovimientoDeCaballo;
Begin
writeln('Este es el movimimento del Caballo');
readln;
End;
procedure MostrarSopa;
Begin
writeln('S O P A D E L E T R A S : ');
writeln;
writeln(' ',var1);
writeln(' ',var2);
writeln(' ',var3);
writeln(' ',var4);
writeln(' ',var5);
writeln(' ',var6);
writeln(' ',var7);
writeln;
End;
procedure MostrarMenu;
Begin
writeln('E L I J A L A P I E Z A: ');
writeln(' 1.- TORRE');
writeln(' 2.- ALFIL');
writeln(' 3.- CABALLO');
writeln(' 4.- SALIR');
End;
BEGIN
ClrScr;
Repeat
ClrScr;
MostrarSopa;
writeln;
MostrarMenu;
write('Escoja una opcion: ');
readln(opc);
case opc of
1: MovimientoDeTorre;
2: MovimientoDeAlfil;
3: MovimientoDeCaballo;
end;
Until (opc = 4);
writeln;
END.
impresionante luis tu explicacion impecable, muy agradecido contigo es que no entendia muy bien el programa y ahora que lo plasmas en codigo muy muy bien gracias
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)