Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2012, 21:08   #1
Laknak
Новичок
Джуниор
 
Регистрация: 14.09.2011
Сообщений: 1
Восклицание Delphi. Задача на списки. Посмотрите, необходима отладка.

Доброго времени суток, Дорогие Жители форума. Почти кое-как на японской силе и помощи друзей написал программу. Прога на Object Pascal.. Но она не работает Помогите пожалуйста с отладкой. Последняя задача осталась для допуска к экзамену за летнюю сессию. Очень нужна ваша помощь. З.ы. списки не перевариваю просто

Условие:Пусть в файле хранятся записи со сведениями об автомобилях и их владельцах (марка, номер ГАИ, фамилия владельца). Необходимо:
для каждой марки автомобиля составить список, содержащий фамилии владельцев автомобилей данной марки;



Код:
program Laba4;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type  // TElem = string;
       TLink = ^Tzveno;
       Tzveno = record
                     Marka: string[10];
                     FIO : string[20];
                     GAI : string[2];
                     next : TLink;
                     end;
var   l, l1,l2, p: TLink;
      f:  Textfile;
      q,Fam,Mar,Nom:string;

procedure sozd(var l:TLink;Mar,Fam,Nom:string);
//создаём список
var
 p1:TLink;
begin
if   l = nil   then
 begin   new(p1);
         l:=p1;
         p1^.Marka:=Mar;
         p1^.FIO:=Fam;
         p1^.GAI:=Nom;
         p1^.next:=nil;

 end
else    sozd(l^.next,Mar,Fam,Nom);
end;

procedure   pechat(l : TLink); // печать линейного списка
begin
if   l<> nil   then  //  пока не достигли конца списка
 begin
        writeln(l^.Marka);
        writeln(l^.FIO);
        writeln(l^.GAI);
        pechat(l^.next); //  печатаем следующий элемент списка
 end;
end;

procedure delete(var l:TLink;q:string);
var y:TLink;
 Begin
 If {(l<>nil) and }(l^.next<>nil) then
//пока не достигли конца списка и ссылка на следующий элемент не пустая
 begin
  If (l^.next.Marka=q) then
   begin
    //l:=l^.next;
    y:=l^.next;
    l^.next:=y^.next;
    Dispose(y);
     delete(l,q);
   end
   else delete(l^.next,q);
  end;
 end;

procedure Printinfile(l:TLink);
 begin
   If l<>nil then
   begin
    Writeln(l^.Marka);
    Writeln(f,l^.Marka);
    Writeln(l^.FIO);
    Writeln(f,l^.FIO);
    Writeln(l^.GAI);
    Writeln(f,l^.GAI);
    Printinfile(l^.next);
   end;
 end;

begin
  AssignFile(f,'E:\text.txt');
// связываем файловую переменную с именем файла
  Reset(f); // открываем файл на чтение

  p:=nil;
  //l1:=p;
  While not eof(f) do
   begin
     readln(f,Mar);
     readln(f,Fam);
     readln(f,Nom);
     sozd(p,Mar,Fam,Nom);
   end;
  //l:=p;
  pechat(p);
    close(f);
   writeln;
   writeln('Vvedite marky');
   readln(Mar);
   l2:=p;
   delete(p,Mar);
   Rewrite(f);
   //writeln;
   writeln('Ydalenie proshlo yspeshno');

   Printinfile(l2);
   writeln;
   pechat(l2);
   close(f);
   Readln;
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Laknak; 11.11.2012 в 22:37. Причина: Не был указан язык программирования
Laknak вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на двусвязные списки pascal (Нафаня) Помощь студентам 2 07.10.2012 20:39
Двусвязные списки (С) tanya-tanya Помощь студентам 2 15.08.2012 07:50
Двусвязные списки vlados007 Общие вопросы C/C++ 5 13.02.2012 18:12
Двусвязные списки aidar9012 Помощь студентам 6 28.06.2010 02:05