Ejercicios Programación
1 1 2 3 4 5 6 7 8 2 3 4 5 6 7 8 Fil 1 2 3 4 5 6 7 8 Col Tipo Long
-1 -1 -1 -1 -1 -1 -1 -1
-1 3 6 6 6 8 8 -1
-1 3 0 1 0 0 0 -1
-1 0 0 1 0 0 5 -1
-1 0 7 7 7 0 5 -1
-1 0 0 0 0 4 5 -1
-1 2 2 2 0 4 0 -1
-1 -1 -1 0 -1 -1 -1 -1
4 2 2 6 7 3 3 6
3 7 2 6 4 2 5 2
H V H H H V V V
2 3 2 2 3 3 3 2
Página 3/10
Suponiendo definidos lossiguientes tipos de datos:
type TMovim = (arriba,abajo,izda,dcha); TTablero = array[1..8,1..8] of integer; TInfoFich = record Fil,Col: 1..8; Tipo: char; Long: integer end; TListado = array[1..8] of TInfoFich;
a) [1,5 ptos] Crear un subprograma que reciba una matriz de tipo TTablero y devuelva el vector TListado correspondiente, suponiendo que la matriz es correcta b) [1,5 ptos] Crear un subprogramaque reciba un vector de tipo TListado y devuelva la matriz TTablero correspondiente., suponiendo que el vector es correcto c) [1,5 ptos] Crear un subprograma, comprobar, que reciba como parámetros una matriz de tipo TTablero, un entero que identifica un ficha (entre 1 y 8) y un movimiento de ficha (tipo TMovim) y devuelva un valor entero que indique si el movimiento se puede realizar o no, con elsiguiente significado: • 0 : La ficha se puede mover. • -1 : Movimiento bloqueado por el borde del tablero. • -2 : La ficha no se puede mover de ese modo (se ha pedido mover arriba o abajo a una ficha horizontal o izda o dcha a una ficha vertical) • i > 0 : El movimiento de la ficha está bloqueado por la ficha número i. Por ejemplo, con el tablero mostrado en el dibujo, si se pide mover dcha a laficha 4, la respuesta será -1, si se pide mover izda a la ficha 4 la respuesta será 0, si se pide mover dcha a la ficha 7 la respuesta será -2, si se pide mover dcha a la ficha 1 la respuesta será 7.
Se dan a continuación varias aproximaciones solución del apartado a) del ejercicio, y soluciones a los apartados b y c:
Página 4/10
a: Tablero a listado
Procedimiento Entrada: tablero(matriz 8x8). El núcleo lo constituyen las 6x6 posiciones centrales. Salida : fichas del tablero, en formato de lista Suposiciones: el tablero de entrada es correcto (hay exactamente 8 fichas, colocadas así, etc)
Solución 1 (por fichas, en orden de número de ficha)
Para cada ficha p (de 1 a 8) Buscar posición Noroeste de la ficha p en el (núcleo del) tablero → posición = f, c Poner posición en laLista de p calcular y anotar dirección y longitud de la ficha fin_para
Solución 2 (por fichas, según se van encontrando)
Repetir 8 veces (tantas como fichas) Buscar la primera posición del tablero distinta de 0: → f, c, p=número de ficha calcular y anotar dirección y longitud de la ficha borrándola del tablero fin_repetir
Solución 3 (por celdas, procesando ficha cada vez que se encuentra...
Regístrate para leer el documento completo.