Pascal/Turbo Pascal - BARCOS ARRAYS URGENTE

 
Vista:
sin imagen de perfil

BARCOS ARRAYS URGENTE

Publicado por Lucia (1 intervención) el 22/11/2022 20:46:24
Tenemos en la entrada datos de una serie de barcos para el juego de los barcos. Los barcos se colocan horizontalmente o verticalmente en un tablero. El tablero numera las columnas con letras, A, B, C, ... y las filas con números, 1, 2, 3, ...

Un barco puede ser

Submarino, de longitud 1.
Dragaminas, de longitud 2.
Fragata de longitud 3.
PortaAviones, de longitud 4.
Además, cada barco tiene información relativa al juego, que incluye

La posición de la proa (arriba para barcos verticales, a la izquierda para barcos horizontales).
El color, que puede ser Rojo, Verde o Azul.
Si está Tocado, Hundido o Intacto. (durante el juego se hacen disparos, pero no en este ejercicio).
Disponemos en la entrada estándar de un número que indica el número de filas, un número que indica el número de columnas, y datos de barcos, terminados con la palabra FIN. Para cada barco tenemos su tipo, orientación, columna y fila de la proa, color, y estado del barco (tocado, etc.). Todo ello, escrito con un sólo valor por línea.

Se quiere un programa en pascal que, leyendo estos datos de la entrada, haga lo siguiente:

Escriba cuántos barcos hay y cuántos barcos hundidos hay.
Dibuje al finalizar el tablero, mostrando en el tablero cada uno de los barcos. Para cada barco, hay que dibujar la inicial del tipo de barco en cada una de las casillas que ocupa. Pero, si el barco está hundido, hay que dibujarlo marcando con 'X' cada una de las casillas del barco.
Puede suponerse que los barcos no salen del tablero.
Si hay solapamiento de barcos, se dibuja en cada casilla el primer barco leído que ocupa la posición que se solapa.
Pistas:

El procedimiento leerbarco debería tener dos parámetros, uno el barco y otro un boolean que indique si tras la llamada a leerbarco hemos encontrado FIN en lugar de un barco.
Para leer la clase de barco o el FIN se sugiere un enumerado que tenga las clases de barco y FIN, y luego la clase de barco será un subrango de dicho tipo.
Deberías utilizar un record que indique cuántos barcos has leído y tenga un array hasta un número máximo de barcos razonable.
Para dibujar el tablero es mejor, para cada casilla, buscar si hay un barco en dicha casilla, y luego dibujar el carácter correspondiente.
Para esta entrada:

5
10
FIN
La salida ha de ser esta:

0 barcos 0 hundidos
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .


Para esta entrada:

5
10
Submarino
Vertical
C
3
Verde
Hundido
FIN
La salida ha de ser esta:

1 barcos 1 hundidos
. . . . . . . . . .
. . . . . . . . . .
. . X . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder