Для тестирования Можно создать тестовые файлы с следующей программы: type tR = real; tF = file of tR;
procedure WF(fn: string; m, n: integer); var fout: tF; i: integer; begin Assign(fout, fn); Rewrite(fout); for i := m to n do Write(fout, i / 2); Close(fout) end;
type Data = record day: 1..31; month: 1..12; year: integer end; lichn = record famnam: string; datr: Data end; listlichn = array [1..nm] of lichn;
var m: listlichn; n: integer;
procedure GetLichn(k: integer); begin Write(k, ') Введите через пробел фамилию, имя: '); Readln(m[k].famnam); Writeln('Введите через пробел день, месяц и год рождения: '); Readln(m[k].datr.day, m[k].datr.month, m[k].datr.year) end;
procedure Vvod(var p: integer); var i: integer; begin Write('Введите количество лиц n (максимум 50) -> '); Readln(p); if p <= 50 then for i := 1 to p do GetLichn(i) else begin Writeln('Вы ввели неправильное значение'); p := 0 end end;
procedure Zapros1; { фамилии и имена тех кто родился в месяц l года } var i: integer; l: 1..12; begin Write('Введите номер месяца рождения (1-12): '); Readln(l); for i := 1 to n do if m[i].datr.month = l then WriteLichn(i) end;
procedure Zapros2; { фамилии и имена тех кто родился в год a } var a, i: integer; begin Write('Введите год рождения: '); Readln(a); for i := 1 to n do if m[i].datr.year = a then WriteLichn(i) end;
procedure Zapros3; { фамилии и имена тех чья дата рождения z.l.a } var a, i: integer; z: 1..31; l: 1..12; begin Write('Введите через пробел день, месяц и год рождения: '); Readln(z, l, a); for i := 1 to n do if (m[i].datr.year = a) and (m[i].datr.month = l) and (m[i].datr.day = z) then WriteLichn(i) end;
begin Vvod(n); Zapros1; Zapros2; Zapros3 end.
Тестовое решение: Введите количество лиц n (максимум 50) -> 3 1) Введите через пробел фамилию, имя: Иванов Иван Введите через пробел день, месяц и год рождения: 24 12 1973 2) Введите через пробел фамилию, имя: Петров Петр Введите через пробел день, месяц и год рождения: 05 03 1982 3) Введите через пробел фамилию, имя: Козлова Екатерина Введите через пробел день, месяц и год рождения: 1 12 1994 Введите номер месяца рождения (1-12): 12 Иванов Иван 24.12.1973 Козлова Екатерина 1.12.1994 Введите год рождения: 1982 Петров Петр 5.3.1982 Введите через пробел день, месяц и год рождения: 5 3 1982 Петров Петр 5.3.1982
tR = real;
tF = file of tR;
procedure SwapFile(fn1, fn2: string);
var
r: tR;
fin, fout: tF;
begin
Assign(fin, fn1); Reset(fin);
Assign(fout, fn2); Rewrite(fout);
while (not Eof(fin)) do begin Read(fin, r); Write(fout, r) end;
Close(fin); Close(fout)
end;
var
f1, f2, f3, f4, f5, fh: string;
begin
f1 := 'f1.bin'; f2 := 'f2.bin'; f3 := 'f3.bin';
f4 := 'f4.bin'; f5 := 'f5.bin'; fh := 'tmp.bin';
{ f2 <-> f4 }
SwapFile(f2, fh); SwapFile(f4, f2); SwapFile(fh, f4);
{ f5->h, f3->f5, f1->f3, h->f1 }
SwapFile(f5, fh); SwapFile(f3, f5); SwapFile(f1, f3); SwapFile(fh, f1)
end.
Для тестирования
Можно создать тестовые файлы с следующей программы:
type
tR = real;
tF = file of tR;
procedure WF(fn: string; m, n: integer);
var
fout: tF;
i: integer;
begin
Assign(fout, fn); Rewrite(fout);
for i := m to n do Write(fout, i / 2);
Close(fout)
end;
var
f1, f2, f3, f4, f5: string;
begin
f1 := 'f1.bin'; f2 := 'f2.bin'; f3 := 'f3.bin';
f4 := 'f4.bin'; f5 := 'f5.bin';
WF(f1, 3, 7); WF(f2, 11, 19); WF(f3, -6, 9); WF(f4, 0, 11); WF(f5, 14, 22);
end.
Далее можно просмотреть содержимое созданных файлов с следующей программы:
type
tR = real;
tF = file of tR;
procedure WF(fn: string);
var
fin: tF;
r: tR;
begin
Writeln(fn);
Assign(fin, fn); Reset(fin);
while (not Eof(fin)) do
begin Read(fin, r); Write(r:0:1, ' ') end;
Writeln;
Close(fin)
end;
var
f1, f2, f3, f4, f5: string;
begin
f1 := 'f1.bin'; f2 := 'f2.bin'; f3 := 'f3.bin';
f4 := 'f4.bin'; f5 := 'f5.bin';
WF(f1); WF(f2); WF(f3); WF(f4); WF(f5)
end.
Затем выполнить основную программу по перезаписи и снова запустить программу для просмотра обновленнных файлов.