Pascal/Turbo Pascal - pascal matrices

 
Vista:

pascal matrices

Publicado por juana (9 intervenciones) el 09/09/2011 01:07:20
HOLA NECESITO AYUDA CON ESTO!!!!

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 0 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?
Qué competidor fue el que realizó con éxito la menor cantidad de saltos
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

pascal matrices

Publicado por ramon (2158 intervenciones) el 17/09/2011 16:50:19
{Es algo de esto}

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