Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 25.01.2014, 00:21   #1 (permalink)
Kimster
Новичок
 
Регистрация: 24.01.2014
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль. Работа со списками

Доброго времени суток.
Имеется задача:
------
Цитата:
4)В банке данных о получении пособий на детей находятся три поля:
1-ое поле: ФИО рабочих
2-ое поле: количество детей
3-е поле: даты рождения (год, месяц, число) детей.
Определить, сколько пособий на своих детей получает каждый рабочий (дети старше 18 лет пособие не получают). Определить рабочего, получающего максимальное пособие.
Выполнено.
Цитата:
13. Запрограммировать следующие процедуры и функции:
а) перезапись из файла в массив,
б) поиск записи по двум полям в массиве с занесением найденных записей в новый файл,
в) добавление записи в конец файла,
г) поиск записи с изменением одного из полей записи в файле,
д) вывод файла,
е) построение диаграммы по одному из полей записи.
Вывод файла организован, добавление записи в конец файла не работает почему-то (ошибка записи).
-----
Прошу помощи с этой темой

Код:
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.
Kimster вне форума   Ответить с цитированием

Старый 25.01.2014, 00:21
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Моя задача - дать вам знать о том, что на форуме есть похожие посты

Паскаль. Работа с деревьями
Работа с BLU RAY

Старый 25.01.2014, 09:08   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Во-первых, попрошу поаккуратнее с терминологией: в Паскале "список" - это вполне определенная динамическая структура в виде массива (стека) записей, одно из полей которых есть указатель с адресацией следующего элемента, а во-вторых, эта задача уже разбиралась здесь: Программа на тему записи и процедуры и повторно впрягаться в нее у меня как-то вот желания нет.
P.S. Между прочим, в приведенном здесь коде я без труда узнал перекатанные фрагменты своей же программы, выложенной по ссылке, правда, с добавлением некоей процедуры LOG3 взамен моей (работающей!) AddRec. Ну что же, если Вас не устраивает то, как эта часть задачи была решена у меня и Вы хотите по-своему - в добрый путь! Только мы-то тут при чем?
Vladimir_S вне форума   Ответить с цитированием
Старый 25.01.2014, 13:03   #3 (permalink)
Kimster
Новичок
 
Регистрация: 24.01.2014
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я не вижу, чтобы я выдал это за свою программу, и да, я в курсе о той теме, и также в курсе, что это ваша программа, в которую я добавил свою попытку записи файла. В любом случае спасибо за ответ.
Kimster вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 21:05.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.