[ Foro de Pascal ]

Proyecto de Programacion, Duda respecto a como entender el problema

04-May-2015 21:42
Franklin Sosa
4 Respuestas

Muy buenas tardes PROGRAMADORES!...
Muchas gracias de antemano si pudiesen ayudarme, es la primera vez en el foro, Y busco ayuda porque no entiendo mucho de la materia (me gusta pero me complica)
Estudio Ing Informatica 3er Semestre, Tengo Conflictos con un Proyecto de "ALGORITMOS Y PROGRAMACION I"

Resulta que tengo el siguiente Proyecto, no pido que me digan como hacerlo basicamente la matriz ya le tengo hecha...
Lo unico que no entiendo es como imprimir lo que me piden, en si no entiendo la sintaxis del problema...
Si me pudiesen solo dar una idea para guiarme. Muchas gracias nuevamente.

Ahi va:
 AJEDREZ DE LETRAS
Encontrar las 20 palabras que están contenidas en 20 variables de tipo string de la longitud variable. El recorrido para encontrar las palabras es siguiendo la trayectoria de las piezas de ajedrez que es de la siguiente manera:  

TORRE Se mueve en líneas horizontales y verticales, de izquierda a derecha y viceversa

ALFIL Se mueve en líneas diagonales, de izquierda a derecha y viceversa

CABALLO Esto es dos en dirección vertical (hacia arriba o hacia abajo) y una en horizontal (izquierda o derecha) , o dos en dirección horizontal (izquierda o derecha) y una vertical (hacia arriba o hacia abajo).  

[img]/usr/tmp/5547c8d13b597-Sin-titulo.jpg[/img]
 
Ejemplo:  
Sean las variables de entrada siguientes, de longitud 6:  

1. ORMROG = variable1
2. LETORT = variable2
3. LIORRE = variable3
4. AANIER = variable4
5. BAUOYE = variable5
6. ASNOEP = variable6
7. CLIFLA = variable7  

Descubrir con los movimientos de las piezas de ajedrez TORRE, ALFIL, CABALLO las palabras caballo, reina, rey, toro, alfil, peón, tía, ojo. Cada palabra tiene una sola trayectoria.  
La salida es la ruta a seguir para cada palabra, dentro de cada variable de entrada:  
Por ejemplo para caballo, reina, ojo, toro y tía la salida debe ser:  

CABALLO, trayectoria de torre
Variable7[1]
Variable6[1]
Variable5[1]
Variable4[1]
Variable3[1]
Variable2[1]
Variable1[1]  

REINA, trayectoria de torre
Variable4[6]
Variable4[5]
Variable4[4]
Variable4[3]
Variable4[2]  

OJO, NO EXISTE  

TIA, trayectoria de alfil
Variable2[3]
Variable3[2]
Variable4[1]  

TORO, trayectoria de caballo
Variable2[3]
Variable2[4]
Variable2[5]
Variable1[5]  

UNICAMENTE USAR STRING, CHAR, LENGTH, POS, COPY, INSERT, DELETE


05-May-2015 23:43
Nacho Cabanes (+83)

Tienes que pensar cómo recorrería ese "tablero" cada una de las piezas.

Por ejemplo, si recorres la primera columna hacia arriba obtienes la palabra "caballo"... y recorrer una matriz bidimensional por columnas es fácil. Recorrer 7 variables distintas es más trabajoso, pero no por ello es difícil. Por eso, yo comenzaría por volcar esas variables a un array bidimensional de char (o a un array de string) si te lo permiten.


06-May-2015 18:29
Luis Torres (+18)

La verdad es que manejar el problema con un array bidimensional te facilitará mucho las cosas; sin embargo, podrías utilizar un "case" para que puedas trabajar con las variables. Para cada movimiento de las piezas de ajedrez hay que estudiar muy bien cómo cambiarían los índices del array (en el caso de usar array bidimensional) para luego implementarlo en el programa con ciclos for (dos ciclos). Yo elaboré un código que hará el movimiento de la Torre en el ejemplo que citó el profesor Nacho Cabanes en su respuesta. Observa que el código se puede customizar mucho para hacerlo adaptable  cualquier capricho de búsqueda del usuario; por ejemplo, si modificas la variable "j" harías un recorrido en la columna que esté señalada en esa variable, también podrás comenzar desde otra fila cambiando el valor de la variable "i", y podrías crear una variable nueva para que el recorrido en "i" llegue hasta cierta fila y no hasta el final. El código que te coloco a continuación es muy básico, pero ilustra la idea del uso del "case" para simular las filas del arreglo bidimensional y, el movimiento de la Torre que luego podrás personalizar.


program sopaDeLetras;

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: integer;	  
	  
BEGIN
  { Recorre el tablero desde abajo hacia arriba (LA TORRE) }
  for i:=7 downto 1 do
  begin
    j:= 1;
	case i of
	  1: write(var1[j]);
	  2: write(var2[j]);
	  3: write(var3[j]);
	  4: write(var4[j]);
	  5: write(var5[j]);
	  6: write(var6[j]);
	  7: write(var7[j]); 
    end;	  
  end;
  writeln;

  readln;
END.	 


Saludos. Espero haberte orientado.


06-May-2015 18:58
Franklin Sosa

Muchísimas gracias por su gran ayuda.

Por la forma de explicarme, con esto ya tengo la ruta trasada del proyecto.

Remendaciones para no errar?..


06-May-2015 20:20
Luis Torres (+18)

Lo que te recomiendo es que estudies muy bien la forma en la que varían los índices cuando se mueve un Alfil, un Caballo y una Torre (es muy sencillo este último) para que puedas implementar los ciclos for de una manera correcta.

Deberás crear un menú en el que el usuario pueda escoger entre Alfil, Caballo y Torre; luego un submenú para que en caso del Alfil, el usuario pueda escoger la forma de moverse (de izquieda a derecha en diagonal hacia arriba, o de derecha a izquierda en diagonal hacia abajo); lo mismo deberás hacer con cada uno de los posibles movimientos del Caballo y la Torre.

Una vez que el usuario escoja la pieza y su movimiento, deberás presentarle la opción para que pueda indicar los extremos inicial y final del movimiento (solo para Alfil y Torre).
Una vez que tengas todo lo anterior listo y el programa en marcha, entrarás en la fase de validación, de manera que se prohíban aquellos movimientos en los que la pieza salga del tablero.

Finalmente puedes mostrarnos tu código aquí en el foro.



Saludos.






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