Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

TuvanMAN

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Задачу решить надо с однонаправленными линейными списками (каждая строка исходного текстового файла рассматривается как элемент списка), процедурами и текстовыми файлами;  
Цель задачи: напечатать трех наиболее молодых петербуржцев мужчин.
 
program zadan13_6;
  type
    PBook=^TBook;
    TBook=record
    Next:PBook;
 
    fam:string [15];
    ini:string [4];
    year: integer;
    prop: char;
    pol: char;
  end;
 var
  Book,
  BegLIst: PBook;
  Rel:Pointer;
  FBooks:file of TBook;
  F1,F0:text;
 
 procedure CreateList;
 Var
   Book1: PBook;
 begin
   Assign (F1,'f1.inp');
   Reset (F1);
   Beglist:=NIL;
   While not EOF (F1) do
   Begin
     Book1:=Book;
     New (Book);
     with Book^ do
     begin
       Next:=NIL;
       If Beglist=NIL then
          Beglist:=Book
       else
         Book1^.Next:=Book;
       Readln (F1, fam, ini, year, prop, pol);
     end;
   end;
   close (F1)
 end;
 
 procedure Writelist (Headline:String);
 begin
   Append (F0);
   Writeln (F0);
   Writeln (F0,Headline);
   Book:=Beglist;
   while Book<>NIL do
   begin
     with Book^ do
       writeln (F0, fam:15, ini:4, year:4, prop:1, pol:1);
     Book:= Book^.Next;
   end;
   Close (F0);
 end;
 
 procedure SORT;
 var
   Stop,
   First:Boolean;
   Book1,Book2:PBook;
 Begin
   Repeat
     Stop:=True;
     Book:=Beglist;
     First:=True;
     while Book^.Next<>NIL do
     Begin
       If Book^.Year>Book^.Next^.Year then
       Begin
         Book1:=Book;
         Book:=Book^.Next;
         If First then
           Beglist:=Book else
         Begin
           Book2:=Beglist;
           while Book2^.Next<>Book1 do
              Book2:=Book2^.Next;
           Book2^.Next:=Book
         end;
         Book1^.Next:=Book^.Next;
         Book^.Next:=Book1;
         Stop:=False;
       end;
     First:=False;
     Book:=Book^.Next
     end
   until Stop;
 end;
 
 procedure WriteFile;
 Begin
   Assign (FBooks,'f6file.out');
   Rewrite (FBooks);
   Book:=Beglist;
   while Book <>NIL do
   Begin
     write (FBooks,Book^);
     Book:=Book^.Next;
   end;
   Close (Fbooks)
 end;
 
 procedure ReadFile;
 var
   k:Integer;
   Book1:PBook;
 Begin
   Reset (FBooks);
   k:=FileSize (FBooks);
   Release (Rel);
   Beglist :=NIL;
   while k>=0 do
   begin
     Book1:=Book;
     dec(k);
     If k<0 then
        Break;
     Seek (FBooks, k);
     New (Book);
     If Beglist = NIL
      then
      Beglist:=Book;
      else
     Book1^.Next:=Book;
     Read (FBooks,Book^);
     Book^.Next:=NIL
  end;
  Close (FBooks)
 End;  
 
Begin
  Mark (Rel);
  CreateList;
  Assign (F0,'F6.out');
  Writelist ('Ishodnyi text');
  SORT;
  Writelist ('Sortirovka');
  WriteFile;
  ReadFile;
  Writelist ('Vvyvodim ego')
  Release (Rel);
END.

Всего записей: 23 | Зарегистр. 28-09-2010 | Отправлено: 18:04 08-11-2010 | Исправлено: TuvanMAN, 18:08 08-11-2010
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru