compila pero se cierra
Publicado por Marcos (1 intervención) el 16/04/2013 17:08:20
Hola, ando con un problema, el programa compila pero al ingresar primero el nombre y el puntaje del participante se cierra sin notificar ni preguntar por el próximo participante, les dejo la consigna del programa y el código, espero su ayuda gracias!!
Consigna:
"En la ciudad de La Plata se llevó a cabo un importante concurso de Informática, en el cual se presentaron participantes europeos, asiáticos y americanos. Una vez finalizado el concurso, se evaluaron los exámenes. De cada examen se conoce el nombre de la persona que lo realizó, su continente de origen y puntaje (de 0 a 100). Defina la estructura de datos más adecuada para almacenar la información descripta.
Obtener e informar:
a) Participante que obtuvo la mejor calificación.
b) Continente origen de los participantes que promocionaron (se promociona con puntaje mayor que 90).
c) Cantidad de americanos que aprobaron (se aprueba con puntaje mayor que 70) y no promocionaron.
d) Puntaje promedio de los europeos.
Nota: La información de los participantes de un continente se lee en forma consecutiva. Se procesarán exámenes hasta que llegue el examen con nombre de la persona igual a ‘zzz’."
Codigo:
Consigna:
"En la ciudad de La Plata se llevó a cabo un importante concurso de Informática, en el cual se presentaron participantes europeos, asiáticos y americanos. Una vez finalizado el concurso, se evaluaron los exámenes. De cada examen se conoce el nombre de la persona que lo realizó, su continente de origen y puntaje (de 0 a 100). Defina la estructura de datos más adecuada para almacenar la información descripta.
Obtener e informar:
a) Participante que obtuvo la mejor calificación.
b) Continente origen de los participantes que promocionaron (se promociona con puntaje mayor que 90).
c) Cantidad de americanos que aprobaron (se aprueba con puntaje mayor que 70) y no promocionaron.
d) Puntaje promedio de los europeos.
Nota: La información de los participantes de un continente se lee en forma consecutiva. Se procesarán exámenes hasta que llegue el examen con nombre de la persona igual a ‘zzz’."
Codigo:
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
program concurso;
type
participantes = record
nombre: string [20];
origen: string [7];
puntaje: integer;
end;
{lee el participante}
procedure leerparticipante (var participantes: participantes ; var conti: string [7] );
begin
participantes.origen:= conti;
writeln ('ingresar nombre del prticipante de ' , conti );
with (participantes) do begin
readln (nombre);
writeln ('ingresar puntaje');
readln (puntaje);
end;
end;
{determina el participante con la maxima calificacion}
procedure maxpunt (var participantes: participantes ; var maxpart: participantes );
begin
if (participantes.puntaje > maxpart.puntaje) then begin
maxpart.puntaje:= participantes.puntaje;
maxpart.nombre:= participantes.nombre;
maxpart.origen:= participantes.origen;
end;
end;
{cuenta los participantes americanos que aprobaron}
procedure contamer (var participantes: participantes ; var conta: integer);
begin
if ((participantes.puntaje > 70) and (participantes.puntaje < 91)) then
conta:= conta + 1;
end;
{devuelve el promedio de los europeos}
procedure promeuro (var participantes: participantes ; var conte: integer ; var prom: integer ; var punt: integer ; var o : integer);
begin
if (o = 3) then begin
conte:= conte + 1;
punt:= punt + participantes.puntaje;
end
else
prom:= punt div conte;
end;
{informa}
procedure informar (var prom: integer ; var conta: integer ; var maxpart: participantes);
begin
writeln;
writeln;
writeln ('La cantidad de aprticipantes americanos que aprobaron sin promocionar es ', conta );
writeln;
writeln;
with (maxpart) do begin
writeln ('El participante con mejor calificacion es ' , nombre , ' con un puntaje de ', puntaje );
writeln;
writeln;
end;
writeln ('El promedio de europa es ' , prom );
writeln;
writeln;
end;
{determina continente}
procedure modcont (var i: integer; var conti: string [7]);
begin
if (i = 1) then begin
conti:= 'america';
end
else
if (i = 2) then begin
conti:= 'asia';
end
else
conti:= 'europa';
end;
{variables}
var
maxpart: participantes;
participante: participantes;
conta: integer;
conte: integer;
conti: string [7];
prom: integer;
i: integer;
punt: integer;
{cuerpo del programa}
begin
maxpart.puntaje:= -1;
conta:= 0;
conte:= 0;
prom:= 0;
participante.nombre:= 'aaa';
for i:= 1 to 3 do begin
modcont (i, conti);
leerparticipante (participante , conti );
while (participante.nombre <> 'zzz') do begin
maxpunt (participante , maxpart );
if ( i = 1) then
contamer (participante , conta );
promeuro (participante , conte , prom , punt , i );
leerparticipante (participante , conti );
end;
end;
informar (prom , conta , maxpart);
writeln ('para terminar presione enter');
readln;
readln;
end.
Valora esta pregunta


0