Pascal/Turbo Pascal - Ficheros pascal

 
Vista:

Ficheros pascal

Publicado por Dani (1 intervención) el 18/01/2021 18:39:16
Buenas, tengo que resolver el siguiente ejercicio, he conseguido hacer un código que lea un barco, pero cuando intento que lea un jugador me da error, inserto también el código que tengo; espero que alguien pueda echarme una mano, gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{program practica;
 
const
MinFil = 1;
MaxFil = 10;
MinCol = 'A';
MaxCol = 'J';
NumBarcos = 100;
 
type
TipoModBarco = (Submarino, Fragata, Dragaminas, Portaaviones);
TipoColumna = MinCol..MaxCol;
TipoFila = MinFil..MaxFil;
TipoPos = record
columna: TipoColumna;
fila: TipoFila;
end;
TipoOrientacion = (Vertical, Horizontal);
TipoBarco = record
modelo: TipoModBarco;
posicion: TipoPos;
orientacion: TipoOrientacion;
end;
TipoBarcos = array[1..NumBarcos] of TipoBarco;
TipoJugador = record
barcos: TipoBarcos;
num: 0..NumBarcos;
end;
 
procedure leerbarco(var fichero: text; var barco: TipoBarco);
var
aux: char;
begin
read(fichero, barco.modelo);
read(fichero, aux);
while (aux = ' ') do begin
read(fichero, aux);
end;
barco.posicion.columna := aux;
read(fichero, barco.posicion.fila);
read(fichero, barco.orientacion);
end;
 
 
procedure leerbarcos(var fichero: text; var jug: TipoJugador);
begin
jug.num := 0;
while not eof(fichero) do begin
jug.num := jug.num + 1;
leerbarco(fichero, jug.barcos[jug.num]);
end;
end;
 
var
fichero: text;
barco: TipoBarco;
barco2: TipoBarco;
jug1: TipoJugador;
jug2: TipoJugador;
 
begin
assign(fichero, 'datos.txt');
reset(fichero);
 
leerjug(fichero, jug1);
 
close(fichero);
 
 
 
end.}

[Tenemos un juego en el que se sitúan barcos en un tablero para dos jugadores y posteriormente los jugadores efectúan lanzamientos hasta hundir todos los barcos de los jugadores contrarios.
Un tablero tiene coordenadas desde la A a las J para las columnas y desde el 1 hasta el 10 para las filas, siendo A1 la coordenada de arriba a la izquierda.
Un barco está definido por el tipo de barco (Submarino, Fragata, Dragaminas, Portaaviones), por la posición de su proa (una casilla del tablero) y por su orientación (Horizontal o Vertical).
Un barco horizontal tiene la proa a la izquierda. Uno vertical tiene la proa arriba.
Los submarinos ocupan 1 casilla, las fragatas 2, los dragaminas 3, y los portaaviones 4.
En la entrada, tenemos datos para un dos jugadores, y, para cada jugador, tenemos datos de un número indeterminado de barcos.
Cada jugador en la entrada tiene barcos (quizá ninguno) seguidos por la palabra FIN.
Para cada barco, tenemos en este orden el tipo de barco, la coordenada de la proa y la orientación.
Puede haber cualquier cantidad de espacio en blanco en la entrada entre distintas palabras.
Además, la entrada puede ser incorrecta y en lugar de tener lo que se espera tener, podríamos tener cualquier otra cosa.
Además, los barcos podrían estar mal situados, de tal forma que alguno salga del tablero o de forma que alguno esté sobre otro parcial o totalmente.
Los barcos mal situados deben ignorarse]
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