Паскаль. Работа со списками
Доброго времени суток.
Имеется задача:
------
-----
Прошу помощи с этой темой tehno036
Доброго времени суток.
Имеется задача:
------
Выполнено.4)В банке данных о получении пособий на детей находятся три поля:
1-ое поле: ФИО рабочих
2-ое поле: количество детей
3-е поле: даты рождения (год, месяц, число) детей.
Определить, сколько пособий на своих детей получает каждый рабочий (дети старше 18 лет пособие не получают). Определить рабочего, получающего максимальное пособие.
Вывод файла организован, добавление записи в конец файла не работает почему-то (ошибка записи).13. Запрограммировать следующие процедуры и функции:
а) перезапись из файла в массив,
б) поиск записи по двум полям в массиве с занесением найденных записей в новый файл,
в) добавление записи в конец файла,
г) поиск записи с изменением одного из полей записи в файле,
д) вывод файла,
е) построение диаграммы по одному из полей записи.
-----
Прошу помощи с этой темой tehno036
Код:
uses crt;
const
nowadays = 2013;
n = 10;
type
datar = record
den: 1..31;
mes: 1..12;
god: 1900..nowadays;
end;
rabotnic = record
fio: string;
koldet: 1..10;
data: array [1..10] of datar;
end;
var
ftext: text;
ftip: file of rabotnic;
j,i,pMax: Byte;
p: boolean;
c:Char;
procedure Vvod;
var t:rabotnic;
begin
reset(ftext);
rewrite(ftip);
while not eof(ftext) do
with t do
begin
readln(ftext, fio);
read(ftext,koldet);
for i:=1 to koldet do
read(ftext, data[i].god, data[i].mes, data[i].den);
readln(ftext);
write(ftip, t);
end;
close(ftext);
close(ftip);
end;
procedure WrInf(t:rabotnic);
begin
writeln('FIO: ',t.fio);
writeln('Kolichestvo detey: ',t.koldet);
write('data: ');
for i:=1 to t.koldet do
write(t.data[i].den,'.',t.data[i].mes,'.',t.data[i].god,' ');
writeln;
end;
Procedure LOG3;
var j ,i:integer;
t:rabotnic;
begin
writeln ('Vvedite novuyu zapis fio , rost, god');
t.fio:='';
Readln(t.fio);
for i:=1 to 30-length(t.fio) do
t.fio:=t.fio+' ';
readln(t.koldet);
{readln(t.data[i].den,t.data[i].mes,t.data[i].god); }
reset(ftip);
for j:=0 to filesize(ftip)-1 do begin
seek(ftip,j);
read(ftip,t);
write(ftip,t);
end;
seek(ftip,j);
write(ftip,t);
end;
Procedure MaxPos;
var
t:rabotnic;
k:Byte;
NameMax: string;
begin
reset(ftip);
pMax:=0;
repeat
read(ftip,t);
k:=0;
for i:=1 to t.koldet do
if (nowadays - t.data[i].god)<18 then inc(k);
writeln('Rabochiy ', t.fio:40,' ',k, ' posobiy(a)');
if k>pMax then
begin
pMax:=k;
NameMax:=t.fio;
end;
until EoF(ftip);
Close(ftip);
writeln('Max kol posobij = ',pMax,' u ', NameMax);
end;
begin
ClrScr;
assign(ftext, 'record.txt');
assign(ftip, 'ftip.rec');
Vvod;
MaxPos;
LOG3;
end.