Pascal/Turbo Pascal - ayuda con pascal

   
Vista:

ayuda con pascal

Publicado por julia (9 intervenciones) el 02/09/2011 17:26:21
HLA NECESITO AYUDA CON ESTE ALGORITMO NOSE COMO HCER...


Enunciado del problema
En una competencia olímpica se registran los resultados de saltos de altura. Las filas representan el nombre del atleta (30 participantes) y las columnas las diferentes alturas saltadas (6 en total). Los símbolos almacenados son: X: salto válido; 0: salto nulo o no intentado.

Fila/Columna 2.00 2.10 2.20 2.30 2.35 2.40
García X 0 X x X 0
Pérez 0 X X 0 X 0
Gil 0 0 0 0 0 0
Mortimer X x X X x X









Se desea determinar e informar:
Los competidores que realizaron todos los saltos en las distintas alturas
Cuántos competidores lograron saltar más de 2.30 m.?
Cuál fue la altura que fuera superada con mayor frecuencia y a que competidor corresponde?
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

ayuda con pascal

Publicado por ramon (2072 intervenciones) el 05/09/2011 20:40:21
{espero te sirva esto se ayuda}

program competi1;
uses
crt;
type
registros = record
nombre : string;
resul : array[1..6] of char;
end;
menor = record
salto, cual : integer
end;

var
da : array[1..30] of menor;
datos : array[1..30] of registros;
f : file of registros;
pos : integer;
tecla : char;
x, y, i : integer;
suma : array[1..30] of integer;

procedure pantalla(xt, yt : integer);
var
pr : integer;
begin
gotoxy(xt + 15,yt);write('Datos de la Competicion');
gotoxy(xt + 15,yt + 1);write('-----------------------');
gotoxy(xt,yt + 4);write('| Nombre |');
gotoxy(xt + 20,yt + 2);write('****** alturas de salto ******');
gotoxy(xt,yt + 3);write(' ---------------------------------------------------------');
gotoxy(xt + 17,yt + 4);write(' 2.00 | 2.10 | 2.20 | 2.30 | 2.35 | 2.40 |');
gotoxy(xt,yt + 5);write(' ---------------------------------------------------------');
for pr := 1 to 29 do
begin
gotoxy(xt,(yt + 5) + pr);write('| |');
gotoxy(xt + 17,(yt + 5) + pr);write(' | | | | | |');
end;
gotoxy(xt,(yt + 5) + (pr + 1));write(' ---------------------------------------------------------');
gotoxy(xt + 1,yt + 6);
end;

function entrada(xe, ye : integer; t : char) : string;
var
cont : integer;
dato : string[50];
begin
cont := 1;
fillchar(dato,51,' ');
dato[0] := chr(50);
gotoxy(xe + 1,ye);
repeat
tecla := readkey;
if (t in['t','T']) and (tecla in[#65..#90,#97..#122,#164,#165,#32]) then
begin
dato[cont] := tecla;
dato[0] := chr(cont);
gotoxy(xe + cont,ye);write(dato[cont]);
cont := cont + 1;
if cont > 50 then
cont := 50;
end;
if (t in['n','N']) and (tecla in[#88,#120,#48]) then
begin
dato[cont] := upcase(tecla);
dato[0] := chr(cont);
gotoxy(xe + cont,ye);write(dato[cont]);
cont := cont + 1;
if cont > 1 then
cont := 1;
end;
if tecla = #8 then
begin
cont := cont - 1;
if cont < 1 then
cont := 1;
dato[cont] := ' ';
dato[0] := chr(cont);
gotoxy(xe + cont,ye);write(dato[cont]);
end;
until (tecla = #13) or (tecla = #27);
entrada := dato;
end;

procedure entrada_datos_compet;
var
comp : integer;
d, xc, yc : integer;
final : boolean;
pul : char;
letra : string[1];
begin
pantalla(10,3);
comp := 1;
final := false;
xc := 11;
yc := 9;
gotoxy(xc,yc);
repeat
datos[comp].nombre := entrada(xc,yc,'t');
xc := 29;
for d := 1 to 6 do
begin
letra := entrada(xc,yc,'n');
datos[comp].resul[d] := letra[1];
xc := xc + 7;
end;
gotoxy(10,39);write('Entrada de Mas Datos [S/N]');
repeat
pul := readkey;
until pul in[#83,#115,#78,#110];
if pul in[#78,#110] then
begin
final := true;
end;
gotoxy(10,39);write(' ');
xc := 11;
yc := yc + 1;
comp := comp + 1;
until (final = true) or (pul = #27);
end;


procedure pantamenu;
begin
clrscr;
gotoxy(10,1);write('<<< MENU INFORME >>>');
gotoxy(10,3);write(' [0] = Entrada Resultados Competicion');
gotoxy(10,5);write(' [1] = competidores que realizaron todos los saltos');
gotoxy(10,7);write(' [2] = Los que saltaron mas de 2.30 m.');
gotoxy(10,9);write(' [3] = altura superada con mayor frecuencia competidores');
gotoxy(10,11);write(' [4] = competidor que realizo con exito la menor cantidad de saltos');
gotoxy(10,13);write(' [5] = Presenta Resultados Competicion');
gotoxy(10,15);write(' [6] = Salir');
gotoxy(10,17);write('**** Elija Opcion ****');
end;

procedure menu_informes;
var
paste : char;
temp, nume, s, i, pox, poy : integer;
num : array[1..30,1..6] of integer;
salt : array[1..6] of integer;
altura : real;
ten : menor;
begin
pantamenu;
repeat
paste := readkey;
case paste of
#48 : begin
clrscr;
entrada_datos_compet;
clrscr;
pantamenu;
end;
#49 : begin {competidores que realizaron todos los saltos}
clrscr;
pox := 10;
poy := 4;
nume := 0;
gotoxy(pox,poy - 2);write(' *** SALTOS COMPLETADOS *** ');
for i := 1 to 30 do
begin
for s := 1 to 6 do
begin
if datos[i].resul[s] = 'X' then
begin
nume := nume + 1;
end;
end;
if nume = 6 then
begin
gotoxy(pox,poy);write(datos[i].nombre);
gotoxy(pox + 28,poy);write(' OK SALTOS TODOS ');
poy := poy + 1;
nume := 0;
end;
nume := 0;
end;
gotoxy(10,39);write('**** Pulse [Enter] ****');
readln;
pantamenu;
end;
#50 : begin {Los que saltaron mas de 2.30 m.}
clrscr;
pox := 10;
poy := 4;
nume := 0;
gotoxy(pox,poy - 2);write(' *** SATARON MAS 2.30 m *** ');
for i := 1 to 30 do
begin
if (datos[i].resul[5] = 'X') or (datos[i].resul[6] = 'X') then
begin
gotoxy(pox,poy);write(datos[i].nombre);
gotoxy(pox + 28,poy);write(' OK SALTOS MAS 2.30 m ');
poy := poy + 1;
end;
end;
gotoxy(10,39);write('**** Pulse [Enter] ****');
readln;
pantamenu;
end;
#51 : begin {altura superada con mayor frecuencia competidores}
clrscr;
pox := 10;
poy := 4;
gotoxy(pox,poy - 2);write('*** Altura Superada Con Mayor Frecuencia ***');
for i := 1 to 30 do
begin
for s := 1 to 6 do
begin
if datos[i].resul[s] = 'X' then
begin
case s of
1 : salt[1] := salt[1] + 1;
2 : salt[2] := salt[2] + 1;
3 : salt[3] := salt[3] + 1;
4 : salt[4] := salt[4] + 1;
5 : salt[5] := salt[5] + 1;
6 : salt[6] := salt[6] + 1;
end;
end;
end;
end;
temp := salt[1];
i := 1;
for s := 2 to 6 do
begin
if salt[s] > temp then
begin
temp := salt[s];
i := s;
end;
end;
s := i;
case s of
1 : altura := 2.00;
2 : altura := 2.10;
3 : altura := 2.20;
4 : altura := 2.30;
5 : altura := 2.35;
6 : altura := 2.40;
end;
for i := 1 to 30 do
begin
if datos[i].resul[s] = 'X' then
begin
gotoxy(pox,poy);write(datos[i].nombre);
gotoxy(pox + 28,poy);write(altura:2:2,' = superada con mayor frecuencia');
poy := poy + 1;
end;
end;
gotoxy(10,39);write('**** Pulse [Enter] ****');
readln;
pantamenu;
end;
#52 : begin {competidor que realizo con exito la menor cantidad de saltos}
clrscr;
pox := 10;
poy := 4;
gotoxy(pox,poy - 2);write('competidor que realizo menor cantidad de saltos Con Exito');
for i := 1 to 30 do
begin
for s := 1 to 6 do
begin
if datos[i].resul[s] = 'X' then
begin
da[i].salto := da[i].salto + 1;
da[i].cual := i;
end;
end;
end;
for i := 1 to 30 do
begin
for s := 2 to 30 do
if (da[i].salto > da[s].salto) and (da[s].salto > 0) then
begin
ten := da[s];
da[s] := da[i];
da[i] := ten;
end;
end;
gotoxy(pox,poy);write(datos[da[1].cual].nombre,' = Menor Salto con Exito');
poy := poy + 1;
gotoxy(10,39);write('**** Pulse [Enter] ****');
readln;
pantamenu;
end;
#53 : begin
clrscr;
pox := 10;
poy := 3;
pantalla(pox,poy);
pox := 11;
poy := 9;
for i := 1 to 30 do
begin
gotoxy(pox,poy);write(datos[i].nombre);
pox := 29;
for s := 1 to 6 do
begin
gotoxy(pox,poy);write(datos[i].resul[s]);
pox := pox + 7;
end;
pox := 11;
poy := poy + 1;
end;

gotoxy(10,39);write('**** Pulse [Enter] ****');
readln;
pantamenu;
end;
end;
until paste = #54;
end;


begin
clrscr;
textcolor(15);
menu_informes;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con pascal

Publicado por julia (9 intervenciones) el 12/09/2011 06:04:35
hola me estos errores:

saltos.pas(216,24) Warning: Local variable "salt" does not seem to be initialized
saltos.pas(269,7) Error: Unknown record field identifier "SALTO"
saltos.pas(270,7) Error: Unknown record field identifier "CUAL"


necesito algo mas sencillo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con pascal

Publicado por ramon (2072 intervenciones) el 20/09/2011 20:34:08
Que pascal empleas.
Que instrucciones tienes para emplear.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar