Помогите пожалуйста решить задачу, которая не дает мне покоя. На языке Free Pascal 
  Сделать программу электронного учета посещения занятий студентами. Робота с  реестром  происходит с помощью меню: 1)Ввод, 2)Вывод, 3)Поиск, 4)Изъятие.
  1) Добавление записи в журнал: ФИО студента, Общее количество пропущенных занятий, Количество пропущенных по уважительной причине.
  2)Вывод записей из журнала: порядковый номер, фамилия и инициалы студента, общее количество пропущенных занятий и количество пропущенных без уважительной причины.
  3)Поиск -  вывод списка студентов, количество пропущенных занятий без уважительной причины, которых превышает введенным пользователем.
  4)Изъятие записи из журнала по введенной фамилии студента. ________________________________________________________________________________________________________
  1. Задачу реализовать исключительно с использованием динамичных переменных и их структур(без единой статичной переменой в программе). 2. Использование стандартных процедур и функций Free Pascal,   кроме: new, dispose, getmem, freemem,  не допускается.
 
 |  
| 
 | 
  
 | 
да... чуть-чуть велкувата вийшла, ну та норм. Код program Uchot; uses crt; const path = 'd:\1.txt'; var    myfile : text;   menu : integer;   chek : boolean;  //===============================================  procedure Entry();  var name, surname , patronymic ,  Quantity ,QuantityOfReason : String;  begin    writeln('Введите: имя');      readln( name);    writeln('Введите фамилию');      readln( surname);    writeln('Введите отчество');    readln( patronymic);    writeln('Введите количество пропущенных занятий');    readln( Quantity);    writeln('Введите количество пропущенных занятий  по уважительной причине');    readln( QuantityOfReason);
     assign(myfile, path);    append(myfile);        writeln(myfile, name );      writeln(myfile, surname);      writeln(myfile, patronymic);      writeln(myfile, Quantity);      writeln(myfile, QuantityOfReason);    close(myfile);  end;  //===============================================  procedure Output();  var name, surname , patronymic ,  Quantity ,QuantityOfReason : String;  count : integer;  begin    assign(myfile, path);    reset(myfile);    count:=0;    writeln('номер | фамилия | инициалы | КПР | КПРчУП');       while not eof(myfile) do    begin      readln( myfile, name );      readln( myfile, surname );      readln( myfile, patronymic );      readln( myfile, Quantity );      readln( myfile, QuantityOfReason );      count:= count +1 ;            writeln(count, ' | ',  surname, ' | ', name[1], '.', patronymic[1] , '. | ',  Quantity, ' | ',  QuantityOfReason );    end;        close(myfile);    writeln('Нажммите ентер чтоби вийти в меню');    readln;  end;  //=============================================== procedure Search(); var name, surname , patronymic ,  Quantity ,QuantityOfReason : String;   count, kol, kolOfR, maxKol, code : integer;    begin   writeln('введите максимальное количество пропущенных занятийбез уважительной причины');   readln(maxKol);
     assign(myfile, path);    reset(myfile);    count:=0;    writeln('список студентов, количество пропущенных занятий без уважительной причины, которых превышает введенному');    writeln('номер | фамилия | инициалы | КПР | КПРчУП');       while not eof(myfile) do    begin      readln( myfile, name );      readln( myfile, surname );      readln( myfile, patronymic );      readln( myfile, Quantity );      readln( myfile, QuantityOfReason );            Val(Quantity, kol,code);      Val(QuantityOfReason, kolOfR,code);            if (kol - kolOfR > maxKol ) then      begin         count:= count +1 ;         writeln(count, ' | ',  surname, ' | ', name[1], '.', patronymic[1] , '. | ',  Quantity, ' | ',  QuantityOfReason );       end;    end;        close(myfile);    writeln('Нажммите ентер чтоби вийти в меню');    readln;   end;  //=============================================== procedure Taking(); var name, surname , patronymic ,  Quantity ,QuantityOfReason :  String;    n, s, p, q, qor : array of string;    ThisSurname : String;    chek : boolean;    count, i : integer;     begin    writeln('введите фамилию студена');    readln(ThisSurname);    chek := false;    count:=0;        assign(myfile, path);    reset(myfile);    while not eof(myfile) do    begin      readln( myfile, name );      readln( myfile, surname );      readln( myfile, patronymic );      readln( myfile, Quantity );      readln( myfile, QuantityOfReason );            if ( ThisSurname <> surname) then      begin        SetLength(n, count+1);        SetLength(s, count+1);         SetLength(p, count+1);         SetLength(q, count+1);        SetLength(qor, count+1);        n [count]:= name;        s [count]:= surname;        p [count]:= patronymic;        q [count]:= Quantity;        qor [count]:= QuantityOfReason;                count:= count +1;      end      else  chek := true;            end;    close(myfile);        if  (chek = false) then writeln('Нет студента с таким именем')    else    begin          rewrite(myfile);      for i := 0 to count-1 do      begin         writeln(myfile, n [i]);          writeln(myfile, s [i]);          writeln(myfile, p[i]);          writeln(myfile, q[i]);          writeln(myfile, qor[i]);      end;        close(myfile);          end;       writeln('Нажммите ентер чтоби вийти в меню');    readln;  end;  //===============================================       begin   chek := true;   while (chek) do   begin         clrscr;     writeln('Меню: 1)Ввод, 2)Вывод, 3)Поиск, 4)Изъятие 5)Выход');     readln(menu);     case menu of       1:  Entry();     2: Output();     3: Search();     4: Taking();     5: chek := false;     end;   end; end.  шлях до файлу можна змінити в Код const path = 'd:\1.txt';  якщо в Фрі паскаліі не буде працювати то можна там задати звичайні (а не динамічні масиви).   
  Verhovny Menko
 
 |  
| 
 | 
  
 
 | 
Это конечно хорошо, но немного не то, что требуют от нас. Нужно сделать не через файл,  а нужно использовать "списки"  типо: 
 Код Program Prj_record; Type  nameANDyearBirth = record sname, name, mname: string[30]; ybirth: word; end; snameANDinitials = string[34]; Var pers : nameANDyearBirth; ptr : ^snameANDinitials; Begin write('Введите фамилию: '); readln(pers.sname); write('Введите имя: '); readln(pers.name); write('Введите отчество: '); readln(pers.mname); write('Введите год рождения: '); readln(pers.ybirth); new(ptr); ptr^ := pers.sname+ ' '+pers.name[1]+' . '+pers.mname[1]+' . '; write(ptr^, ', ', pers.ybirth, ' г.р.'); dispose(ptr); readln; End.  
 
 |  
| 
 | 
  
 |