Сформировать файл записей «COMPETITION.DAT» из фамилий участников соревнований, даты (день, месяц и год) и места ее проведения — Pascal(Паскаль)

Используя сформированный файл, вывести фамилии тех, кто был на соревнованиях в заданном городе в заданном году.

Program PascalGuru;

uses crt;

procedure MENU; forward;

procedure zapisi;
var
  f: text;
  n, i: integer;
  deni, god: integer;
  fam, mesiac, mesto: string;
begin
  assign(f, 'COMPETITION.DAT');
  rewrite(f);
  clrscr;
  write('Skoliko uchastnikov xotite zapisati? ');
  readln(n);
  for i := 1 to n do
  begin
    clrscr;
    writeln('Zapisyvaem ', i, ' uchastnika:');
    write('Familia: ');
    readln(fam);
    writeln;
    writeln('Data:');
    writeln('Deni: ');
    readln(deni);
    writeln('Mesiac: ');
    readln(mesiac);
    writeln('God: ');
    readln(god);
    writeln('Mesto provedenia:');
    readln(mesto);
    writeln(f, fam, ' ', deni, '.', mesiac, '.', god, ' ', mesto);
  end;
  writeln('Fail uspeshno zapisan...');
  readln;
  close(f);
  MENU;
end;

{ ----------------------- }
procedure readALL;
var
  f: text;
  s: string;
begin
  assign(f, 'COMPETITION.DAT');
  reset(f);
  clrscr;
  writeln('Vse uchastniki:');
  writeln;
  while (not eof(f)) do
  begin
    readln(f, s);
    writeln(s);
  end;
  readln;
  close(f);
  MENU;
end;

{ ----------------------- }
procedure readGOD;
var
  f: text;
  s, fam, mesto, mestoR: string;
  p, god, godR, code: integer;
  b: boolean;
begin
  assign(f, 'COMPETITION.DAT');
  reset(f);
  clrscr;
  writeln('Vyvod Famili uchastnikov po mestu i godu:');
  writeln;
  write('Vvedite Gorod provedeniya: ');
  readln(mestoR);
  write('Vvedite GOD provedeniya: ');
  readln(godR);
  clrscr;
  writeln('uchastniki ', godR, ' goda, s goroda "', mestoR, '":');
  writeln;
  b := false;
  while (not eof(f)) do
  begin
    readln(f, s);
    p := pos(' ', s);
    fam := copy(s, 1, p - 1);
    delete(s, 1, p);
    p := pos('.', s);
    delete(s, 1, p);
    p := pos('.', s);
    delete(s, 1, p);
    p := pos(' ', s);
    val(copy(s, 1, p - 1), god, code);
    mesto := copy(s, p + 1, length(s) - p);
    if (mesto = mestoR) and (god = godR) then
    begin
      writeln(fam);
      b := true;
    end;
  end;
  if not b then
    writeln('Takix uchastnikov net...');
  readln;
  close(f);
  MENU;
end;

{ ----------------------- }
procedure MENU;
type
  op = 0 .. 3;
var
  option: op;
begin
  clrscr;
  writeln;
  writeln('MENU:');
  writeln;

  writeln('1) Zapisi v fail');
  writeln('2) Procitati vesi fail');
  writeln('3) Procitati opredelennyx uchastnikov');
  writeln;
  writeln('0) Exit');
  readln(option);

  if option = 1 then
    zapisi;
  if option = 2 then
    readALL;
  if option = 3 then
    readGOD;
end;

{ ----------------------- }
begin
  MENU;

end.

Leave a Comment

48 − = 46