Pascal/Turbo Pascal - AYUDA URGENTE ARRAY

 
Vista:
sin imagen de perfil

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder