[ Foro de Pascal ]

seguir programa de un link anterior

05-Dec-2015 16:17
Invitado (marcos85)
4 Respuestas

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.


05-Dec-2015 19:33
Nacho Cabanes (+31)

¿Te refieres a este hilo?

http://www.aprendeaprogramar.com/mod/forum/discuss.php?d=1899
 


08-Dec-2015 20:45
Invitado (marcos85)

Hola profesor nacho, efectivamente me refiero a ese link, cualuir orientacion adicional muy agredecido


14-Dec-2015 07:49
Luis Torres (+12)

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.	 
 


17-Dec-2015 04:56
Invitado (marcos85)

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.)