
AYUDA URGENTE ARRAY
Publicado por David (1 intervención) el 13/01/2023 17:02:03
Hola chic@s, necesito AYUDA URGENTE ya que estoy programando el juego wordle en PASCAL pero hay una parte que no me funciona . Esta parte consiste en AÑADIR UN JUGADOR A UNA LISTA DE JUGADORES (ARRAY PARCIALMENTE LLENO) pero a la hora de volver a ejecutar el programa no se me guarda el jugador en la lista. Os agradeceria si me ayudaseis a encontrar el error.
]
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
PROGRAM wordle;
CONST
MAXJUGADORES = 15;{Número máximo de jugadores}
MAXLETRAS = 5;{Número de letras de la palabra}
MAXINTENTOS = 5;{Número máximo de intentos}
MAXPALABRAS = 150;{Número máximo de palabras}
MAXPARTIDAS = 100;{Número máximo de partidas}
INDICEMIN = 1; {Cifra mínima}
TYPE
{tipo Jugador}
tJugador = RECORD
nombre:string;
ganadas:integer;
perdidas:integer;
porcentaje:real;
END;
{tipo lista de jugadores}
tIndiceJugadores =1..MAXJUGADORES;
tListaJugadores =ARRAY [tIndiceJugadores] OF tJugador;
{Array parcialmente lleno para jugadores}
tJugadores=RECORD
listaJugadores:tListaJugadores;
tope:integer;
END;
{tipo para almacenar una palabra}
tPalabra = string[MAXLETRAS];
{tipo lista de palabras}
tIndicePalabras =1..MAXPALABRAS;
tListaPalabras = ARRAY [tIndicePalabras] OF tPalabra;
{Array parcialmente lleno de palabras}
tPalabras= RECORD
listaPalabras:tListaPalabras;
tope:integer;
END;
{tipo lista de intentos}
tIndiceIntentos=1..MAXINTENTOS;
tListaIntentos= ARRAY [tIndiceIntentos] OF tPalabra;
{Array parcialmente lleno para intentos}
tIntentos= RECORD
listaIntentos:tListaIntentos;
tope:integer;
END;
tPartida= RECORD
nombreJug: string; {nombre del jugador}
intentos:tIntentos;
END;
{tipo lista de partidas}
tIndicePartidas =1..MAXPARTIDAS;
tListaPartidas= ARRAY [tIndicePartidas] OF tPartida;
{Array parcialmente lleno para partidas}
tPartidas= RECORD
listadoPartidas: tListaPartidas;
tope: integer;
END;
{tipo archivos binarios}
tArchivoJugadores = FILE of tJugador;
tArchivoPartidas=FILE OF tPartida;
VAR
jugador1:tJugador;
listaJugadores1:tJugadores;
PROCEDURE escribirJugador (jugador:tJugador);
BEGIN {escribirJugador}
WITH jugador DO
BEGIN
writeln('Nombre: ', nombre);
writeln('Partidas ganadas: ',ganadas);
writeln('Partidas perdidas: ',perdidas);
writeln('Porcentaje de partidas ganadas: ',porcentaje:0:0);
END;
END; {escribirJugador}
PROCEDURE leerJugador (VAR jugador: tJugador);
BEGIN
WITH jugador DO
BEGIN
writeln('Nombre:');
readln(nombre);
ganadas:=0;
perdidas:=0;
porcentaje:=0;
END;
END;
PROCEDURE inicializartJugadores (VAR listaDeJugadores:tJugadores);
BEGIN
listaDeJugadores.tope:=0;
END;
PROCEDURE mostrarListaJugadores (VAR listaDeJugadores:tJugadores);
VAR
i:integer;
BEGIN
IF listaDeJugadores.tope=0 THEN
writeln('La lista esta vacia')
ELSE
FOR i:=1 TO listaDeJugadores.tope DO
BEGIN
writeln('Jugador ',i);
escribirJugador(listaDeJugadores.listaJugadores[i]);
END;
writeln();
END;
FUNCTION buscarNombre(listaDeJugadores:tJugadores;jugador:tJugador):integer; {Subprograma para buscar nombre en la lista de jugadores}
VAR
i,posicion:integer;
BEGIN {Inicio buscarNombre}
i:=INDICEMIN;
WHILE (i<listaDeJugadores.tope) AND (listaDeJugadores.listaJugadores[i].nombre<>jugador.nombre) DO
i:=i+1;
IF (listaDeJugadores.listaJugadores[i].nombre=jugador.nombre) AND (listaDeJugadores.tope<>0) THEN
posicion:=i
ELSE
posicion:=0;
buscarNombre:=posicion;
END;
PROCEDURE altaNuevoJugador (VAR listaDeJugadores:tJugadores;jugador:tJugador);
VAR
i:integer;
BEGIN
IF listaDeJugadores.tope>=MAXJUGADORES THEN
writeln('La lista de jugadores esta llena')
ELSE
BEGIN
i:=buscarNombre(listaDeJugadores,jugador);
IF i<>0 THEN
writeln('El nombre ya esta en uso,introduce uno diferente')
ELSE
BEGIN
listaDeJugadores.tope :=succ(listaDeJugadores.tope);
listaDeJugadores.listaJugadores[listaDeJugadores.tope]:=jugador;
writeln('Jugador anyadido');
END;
END;
END;
BEGIN
leerJugador(jugador1);
altaNuevoJugador(listaJugadores1,jugador1);
mostrarListaJugadores(listaJugadores1);
readln();
END.
Valora esta pregunta


0