Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Untitled(input,output);
- USES CRT;
- TYPE AT=RECORD
- DNI: INTEGER;
- NOMBRE:STRING[50]
- END;
- VAR ATLETAS:FILE OF AT;
- TYPE DIS=RECORD
- CODDISCIPLINA:STRING[7];
- DESCRIP:STRING[20];
- EQUIPO:CHAR
- END;
- VAR DISCIPLINAS:FILE OF DIS;
- TYPE PART=RECORD
- CODDISCIPLINA:STRING[7];
- ANO:INTEGER;
- DNI:INTEGER
- END;
- VAR PARTICIPANTES:FILE OF PART;
- TYPE SED=RECORD
- CODINTERNACIONAL:STRING[3];
- DESCRIPCION:STRING[35]
- END;
- VAR SEDES:FILE OF SED;
- TYPE MXA=RECORD
- DNI:INTEGER;
- ANO:INTEGER;
- CODINTERNACIONAL:STRING[3];
- MEDALLA: ARRAY [1..3] OF INTEGER ;
- END;
- VAR MEDALLASXATLETAS:FILE OF MXA;
- VAR ATLETA:AT;
- VAR DISCIPLINA:DIS;
- VAR PARTICIPANTE:PART;
- VAR SEDE:SED ;
- VAR MEDALLAS:MXA ;
- VAR est:integer;
- VAR auxat : PART;
- PROCEDURE CARGAATLETAS();
- VAR i,j : integer;
- VAR auxi : AT;
- VAR auxj : AT;
- BEGIN
- clrscr;
- seek(ATLETAS,filesize(ATLETAS));
- WRITELN('INGRESE DNI DEL ATLETA');
- READLN(ATLETA.DNI);
- WRITELN('INGRESE NOMBRE Y APELLIDO DEL ATLETA');
- READLN(ATLETA.NOMBRE);
- WRITELN(ATLETA.NOMBRE,ATLETA.DNI);
- WRITE(ATLETAS, ATLETA);
- RESET(ATLETAS);
- for i:=0 to filesize(ATLETAS)-2 do
- begin
- for j:=i+1 to filesize(ATLETAS)-1 do
- begin
- seek(ATLETAS,i);
- read(ATLETAS,auxi);
- seek(ATLETAS,j);
- read(ATLETAS,auxj);
- if auxi.DNI>auxj.DNI then
- begin
- seek(ATLETAS,i);
- write(ATLETAS,auxj);
- seek(ATLETAS,j);
- write(ATLETAS,auxi);
- end;
- end;
- end;
- END;
- PROCEDURE CARGADISCIP;
- BEGIN
- clrscr;
- SEEK(DISCIPLINAS,FILESIZE(DISCIPLINAS));
- WRITELN('INGRESE CODIGO DE DISCIPLINA');
- READLN(DISCIPLINA.CODDISCIPLINA);
- WRITELN('INGRESE NOMBRE DE LA DISCIPLINA');
- READLN(DISCIPLINA.DESCRIP);
- WRITELN('INGRESE S(SI) O N(NO) EN CASO DE SER UNA COMPETENCIA EN EQUIPO O INDIVIDUAL');
- READLN(DISCIPLINA.EQUIPO);
- WRITE(DISCIPLINAS, DISCIPLINA);
- END;
- PROCEDURE CARGAPARTIC ();
- BEGIN
- clrscr;
- SEEK(PARTICIPANTES,FILESIZE(PARTICIPANTES));
- WRITELN('INGRESE CODIGO DE DISCIPLINA');
- READLN(PARTICIPANTE.CODDISCIPLINA);
- WRITELN('INGRESE ANO DE LA COMPETICIÓN');
- READLN(PARTICIPANTE.ANO);
- WRITELN('INGRESE DNI DEL PARTICIPANTE');
- READLN(PARTICIPANTE.DNI);
- WRITE(PARTICIPANTES, PARTICIPANTE);
- END;
- PROCEDURE CARGASEDE();
- VAR i : integer;
- VAR aaa : AT;
- VAR opc : integer;
- VAR sedee,tmp : SED;
- BEGIN
- clrscr;
- writeln('1-Alta');
- writeln();
- writeln('2-Baja');
- writeln();
- writeln('3-Modificacion');
- writeln();
- readln(opc);
- if(opc = 1) then
- begin
- write('Ingrese codigo del pais');
- readln(sedee.CODINTERNACIONAL);
- writeln('Ingrese descripcion');
- readln(sedee.DESCRIPCION);
- Reset(SEDES);
- seek(SEDES,filesize(SEDES));
- write(SEDES,sedee);
- Close(SEDES);
- end;
- if(opc = 2)then
- begin
- write('Ingrese codigo internacional');
- readln(sedee.CODINTERNACIONAL);
- reset(SEDES);
- for i:=0 to filesize(SEDES) do
- begin
- seek(SEDES,i);
- read(SEDES,tmp);
- if(sedee.CODINTERNACIONAL = tmp.CODINTERNACIONAL) then
- begin
- seek(SEDES,filesize(SEDES)-1);
- read(SEDES,tmp);
- seek(SEDES,i);
- write(SEDES,tmp);
- seek(SEDES,filesize(SEDES)-1);
- truncate(SEDES);
- break;
- end;
- end;
- close(SEDES);
- end;
- if(opc = 3)then
- begin
- writeln('Ingrese codigo internacional');
- readln(sedee.CODINTERNACIONAL);
- reset(SEDES);
- for i:=0 to filesize(SEDES) do
- begin
- read(SEDES,tmp);
- if sedee.CODINTERNACIONAL = tmp.CODINTERNACIONAL then
- begin
- writeln('Ingrese la nueva descripcion');
- readln(sedee.DESCRIPCION);
- write(SEDES,sedee)
- end;
- end;
- close(SEDES);
- end;
- END;
- PROCEDURE CARGAMEDALLA ();
- BEGIN
- clrscr;
- SEEK(MEDALLASXATLETAS,FILESIZE(MEDALLASXATLETAS));
- WRITELN('INGRESE DNI DEL COMPETIDOR');
- READLN(MEDALLAS.DNI);
- WRITELN('INGRESE ANO DE LA COMPETICION');
- READLN(MEDALLAS.ANO);
- WRITELN('INGRESE CODIGO INTERNACIONAL');
- READLN(MEDALLAS.CODINTERNACIONAL);
- WRITELN('INGRESE CANTIDAD DE MEDALLAS');
- WRITELN('ORO:');
- READLN(MEDALLAS.MEDALLA[1]);
- WRITELN('PLATA:');
- READLN(MEDALLAS.MEDALLA[2]);
- WRITELN('.BRONCE:');
- READLN(MEDALLAS.MEDALLA[3]);
- WRITE(MEDALLASXATLETAS, MEDALLAS);
- END;
- PROCEDURE ATLETASXANO();
- VAR aab : integer;
- VAR i : integer;
- VAR auxi : integer;
- BEGIN
- clrscr;
- auxi := 0;
- writeln('Ingrese el ano a buscar');
- readln(aab);
- reset(PARTICIPANTES);
- writeln('Dni de los participantes');
- writeln();
- if eof(PARTICIPANTES)
- then
- writeln('No hay atletas')
- else
- begin
- for i:=1 to filesize(PARTICIPANTES) do
- begin
- read(PARTICIPANTES,auxat);
- if aab = auxat.ANO then
- begin
- auxi:=auxi+1;
- writeln(auxat.DNI);
- writeln();
- end;
- end;
- end;
- if auxi = 0 then
- writeln('No se encontraron participantes en este ano');
- readkey();
- end;
- PROCEDURE MEDALLASXANO();
- VAR auxi : integer;
- VAR aab : integer;
- VAR i : integer;
- VAR auxmed : MXA;
- VAR b : integer;
- VAR p : integer;
- VAR o : integer;
- BEGIN
- clrscr;
- auxi := 0;
- b := 0;
- p := 0;
- o := 0;
- reset(MEDALLASXATLETAS);
- writeln('Ingrese el ano a buscar las medallas');
- readln(aab);
- writeln('Medallas:');
- if eof(MEDALLASXATLETAS)
- then
- writeln('No hay atletas')
- else
- begin
- for i:=1 to filesize(MEDALLASXATLETAS) do
- begin
- read(MEDALLASXATLETAS,auxmed);
- if aab = auxmed.ANO then
- begin
- auxi:=auxi+1;
- o := b+auxmed.MEDALLA[1];
- p := p+auxmed.MEDALLA[2];
- b := o+auxmed.MEDALLA[3];
- end;
- end;
- if auxi = 0 then
- writeln('No se encontraron participantes en este ano')
- else
- begin
- writeln('Oro:', o);
- writeln();
- writeln('Plata', p);
- writeln();
- writeln('Bronce:', b);
- writeln();
- end;
- readkey();
- end;
- END;
- PROCEDURE DISCIPLINASXANO();
- VAR aab : integer;
- VAR i : integer;
- VAR j : integer;
- VAR cant : integer;
- VAR cantsr : integer;
- VAR discaux : DIS;
- VAR partaux : PART;
- VAR listapart : array [1..30] of string;
- VAR listasinrep : array [1..30] of string;
- VAR rep : boolean;
- BEGIN
- cantsr := 1;
- cant := 1;
- clrscr;
- writeln('Ingrese anio con disciplinas a listar');
- readln(aab);
- reset(PARTICIPANTES);
- reset(DISCIPLINAS);
- if eof(PARTICIPANTES)
- then
- writeln('No hay atletas')
- else
- begin
- for i:=1 to filesize(PARTICIPANTES) do
- begin
- read(PARTICIPANTES,partaux);
- if partaux.ano = aab then
- begin
- listapart[cant] := partaux.CODDISCIPLINA;
- cant := cant+1;
- end;
- end;
- end;
- //Saca las repeticiones en la listapart de codigos de disciplina
- for i:=1 to cant do
- begin
- rep := false;
- for j:= 1 to cantsr do
- begin
- if listapart[i] = listasinrep[j] then
- rep:=true;
- end;
- if rep = false then
- begin
- cantsr := cantsr+1;
- listasinrep[cantsr] := listapart[i];
- end;
- end;
- if eof(DISCIPLINAS)
- then
- writeln('No hay disciplinas')
- else
- begin
- for i:=1 to filesize(DISCIPLINAS) do
- begin
- read(DISCIPLINAS,discaux);
- for j:= 1 to cantsr do
- begin
- if listasinrep[j] = discaux.CODDISCIPLINA then
- begin
- writeln(discaux.DESCRIP);
- writeln();
- end
- end;
- end;
- end;
- readkey();
- END;
- PROCEDURE TRAYECTORIA_ATLETA();
- VAR dniab : integer;
- VAR i,j : integer;
- VAR medallas : integer;
- VAR rep : boolean;
- VAR cant,cantsr : integer;
- VAR auxat : AT;
- VAR auxipart : PART;
- VAR auxidisc : DIS;
- VAR medallaux : MXA;
- VAR listac : array [1..30] of string;
- VAR listasinrep : array [1..30] of string;
- BEGIN
- cant := 0;
- cantsr := 0;
- writeln('Ingrese el dni del atleta:');
- readln(dniab);
- reset(atletas);
- if eof(ATLETAS)
- then
- writeln('No hay atletas')
- else
- begin
- while (i<filesize(ATLETAS)) OR (auxat.DNI <> dniab) do
- begin
- read(ATLETAS,auxat);
- i:=i+1;
- end;
- if auxat.DNI = dniab then
- begin
- reset(PARTICIPANTES);
- if eof(PARTICIPANTES) then
- writeln('No hay participantes')
- else
- begin
- for i:=1 to filesize(PARTICIPANTES) do
- begin
- read(PARTICIPANTES,auxipart);
- if auxipart.DNI = auxat.DNI then
- begin
- listac[cant] := auxipart.CODDISCIPLINA;
- cant := cant+1
- end;
- end;
- end;
- end
- else
- writeln('No se encontro al atleta');
- end;
- //Saca las repeticiones en la listac de codigos de disciplina
- for i:=1 to cant do
- begin
- rep := false;
- for j:= 1 to cantsr do
- begin
- if listac[i] = listasinrep[j] then
- rep:=true
- end;
- if rep = false then
- begin
- cantsr := cantsr+1;
- listasinrep[cantsr] := listac[i]
- end;
- end;
- reset(DISCIPLINAS);
- if eof(DISCIPLINAS)
- then
- writeln('No hay disciplinas')
- else
- begin
- writeln('Disciplinas en las que participo:');
- writeln();
- for i:=1 to filesize(DISCIPLINAS) do
- begin
- read(DISCIPLINAS,auxidisc);
- for j:=0 to cantsr do
- begin
- if listasinrep[j] = auxidisc.CODDISCIPLINA then
- begin
- writeln(auxidisc.DESCRIP);
- writeln();
- readkey()
- end;
- end;
- end;
- end;
- reset(MEDALLASXATLETAS);
- while not eof(MEDALLASXATLETAS)do
- begin
- read(MEDALLASXATLETAS,medallaux);
- if medallaux.DNI = dniab then
- begin
- medallas := medallas + medallaux.MEDALLA[1];
- medallas := medallas + medallaux.MEDALLA[2];
- medallas := medallas + medallaux.MEDALLA[3];
- end;
- end;
- writeln('Medallas que gano:');
- writeln(medallas);
- writeln();
- readkey();
- END;
- PROCEDURE PARTICIPANTESXDISCIPLINA();
- VAR discab : string[3];
- VAR anioab : integer;
- VAR auxipart : AT;
- VAR auxip : PART;
- BEGIN
- clrscr;
- writeln('Ingrese el codigo de la disciplina a listar:');
- readln(discab);
- writeln('Ingrese el anio a listar:');
- readln(anioab);
- reset(PARTICIPANTES);
- writeln('Participantes en el anio ',anioab);
- writeln();
- reset(PARTICIPANTES);
- while not eof(PARTICIPANTES)do
- begin
- readkey();
- read(PARTICIPANTES,auxip);
- if (auxip.ANO = anioab) AND (auxip.CODDISCIPLINA = discab) then
- begin
- reset(ATLETAS);
- while not eof(ATLETAS)do
- begin
- read(ATLETAS,auxipart);
- if auxipart.DNI = auxip.DNI then
- begin
- writeln(auxipart.NOMBRE);
- writeln();
- end;
- end;
- end;
- end;
- readkey();
- END;
- PROCEDURE PAISCONMASMEDALLAS();
- VAR tmp : integer;
- VAR tmpmax : integer;
- VAR med : MXA;
- VAR sede : SED;
- VAR sedemax : SED;
- BEGIN
- tmpmax := -20;
- sedemax.DESCRIPCION := 'null';
- reset(SEDES);
- while not eof(SEDES) do
- begin
- tmp := 0;
- read(SEDES,sede);
- reset(MEDALLASXATLETAS);
- while not eof(MEDALLASXATLETAS) do
- begin
- read(MEDALLASXATLETAS,med);
- if(med.CODINTERNACIONAL = sede.CODINTERNACIONAL)then
- tmp := tmp + med.MEDALLA[1] + med.MEDALLA[2] + med.MEDALLA[3]
- end;
- close(MEDALLASXATLETAS);
- if tmp > tmpmax then
- begin
- tmp := tmpmax;
- sedemax := sede;
- end;
- end;
- close(SEDES);
- if sedemax.DESCRIPCION = 'null' then
- writeln('No hay sedes')
- else
- begin
- writeln('Sede con mas medallas:',sedemax.DESCRIPCION);
- writeln();
- end;
- readkey();
- END;
- PROCEDURE TOP10();
- VAR i,j : integer;
- BEGIN
- reset(MEDALLASXATLETAS);
- END;
- PROCEDURE ABM();
- VAR OPABM:INTEGER;
- BEGIN
- WRITELN('1.ATLETAS');
- writeln();
- writeln('2.DISCIPLINA ');
- writeln();
- writeln('3.PARTICIPANTE ');
- writeln();
- writeln('4.SEDE ');
- writeln();
- writeln('5.MEDALLA');
- writeln();
- READLN(OPABM);
- CASE OPABM OF
- 1: CARGAATLETAS();
- 2: CARGADISCIP();
- 3: CARGAPARTIC();
- 4: CARGASEDE();
- 5: CARGAMEDALLA();
- END;
- END;
- VAR OP:INTEGER;
- BEGIN
- ASSIGN(ATLETAS,'C:\Users\Nahuel\Desktop\Tp3\Atletass.dat');
- {$i-}
- reset(ATLETAS);
- est:=ioresult;
- {$i+}
- if est<>0
- then
- rewrite(ATLETAS);
- ASSIGN(DISCIPLINAS, 'C:\Users\Nahuel\Desktop\Tp3\Disciplinass.dat');
- {$i-}
- reset(DISCIPLINAS);
- est:=ioresult;
- {$i+}
- if est<>0
- then
- rewrite(DISCIPLINAS);
- ASSIGN(PARTICIPANTES, 'C:\Users\Nahuel\Desktop\Tp3\Participantess.dat');
- {$i-}
- reset(PARTICIPANTES);
- est:=ioresult;
- {$i+}
- if est<>0
- then
- rewrite(PARTICIPANTES);
- ASSIGN(SEDES, 'C:\Users\Nahuel\Desktop\Tp3\Sedess.dat');
- {$i-}
- reset(SEDES);
- est:=ioresult;
- {$i+}
- if est<>0
- then
- rewrite(SEDES);
- ASSIGN(MEDALLASXATLETAS, 'C:\Users\Nahuel\Desktop\Tp3\Medallasxatletass.dat');
- {$i-}
- reset(MEDALLASXATLETAS);
- est:=ioresult;
- {$i+}
- if est<>0
- then
- rewrite(MEDALLASXATLETAS);
- WHILE OP<>9 DO
- BEGIN
- clrscr;
- WRITELN('Ingrese opcion:');
- writeln('1-ABM ');
- writeln();
- writeln('2-Listar atletas por anio ');
- writeln();
- writeln('3-Medallas ganadas por ano ');
- writeln();
- writeln('4- Listar disciplinas por anio ');
- writeln();
- writeln('5-Trayectoria del atleta ');
- writeln();
- writeln('6-Participantes por disciplina ');
- writeln();
- writeln('7-Sede con mas medallas ');
- writeln();
- writeln('9-Salir');
- writeln();
- READLN(OP);
- CASE OP OF
- 1:ABM();
- 2:ATLETASXANO();
- 3:MEDALLASXANO();
- 4:DISCIPLINASXANO();
- 5:TRAYECTORIA_ATLETA();
- 6:PARTICIPANTESXDISCIPLINA();
- 7:PAISCONMASMEDALLAS();
- 8:TOP10();
- 9:close(ATLETAS);
- END;
- END
- END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement