• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль. Работа со списками

  • Автор темы Автор темы Kimster
  • Дата начала Дата начала

Kimster

Ученик
Регистрация
24 Янв 2014
Сообщения
3
Реакции
0
Баллы
0
Паскаль. Работа со списками

Доброго времени суток.
Имеется задача:
------
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.
 
Во-первых, попрошу поаккуратнее с терминологией: в Паскале "список" - это вполне определенная динамическая структура в виде массива (стека) записей, одно из полей которых есть указатель с адресацией следующего элемента, а во-вторых, эта задача уже разбиралась здесь: http://www.tehnari.ru/f41/t92738/ и повторно впрягаться в нее у меня как-то вот желания нет.
P.S. Между прочим, в приведенном здесь коде я без труда узнал перекатанные фрагменты своей же программы, выложенной по ссылке, правда, с добавлением некоей процедуры LOG3 взамен моей (работающей!) AddRec. Ну что же, если Вас не устраивает то, как эта часть задачи была решена у меня и Вы хотите по-своему - в добрый путь! Только мы-то тут при чем?
 
Я не вижу, чтобы я выдал это за свою программу, и да, я в курсе о той теме, и также в курсе, что это ваша программа, в которую я добавил свою попытку записи файла. В любом случае спасибо за ответ.
 
Назад
Сверху