Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 27.11.2012, 01:01   #1 (permalink)
vladis222
Новичок
 
Регистрация: 25.07.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Работа со списками

Здравствуйте, обращаюсь к вам по поводу работы со списками в Делфи. У меня лабораторная работа заключается в том, чтобы из списка удалить элементы с четным значением ключа. Я написал программу полностью,как у нас в методичке,написал процедуру удаления элементов с четным значением ключа,но как не пишу,программа уперто не хочет запускать удаление четных ключей. Посмотрите,пожалуйста на мой код.может я где-то ошибся.
Вот код программы :
Код:
program spiski;
{Удалить из списка 2 элемента,стоящие перед последним элементом списка}
{$APPTYPE CONSOLE}

uses
  SysUtils,CRT32;
type u=^zap;
     zap=record
            inf:Integer;
            ukz:u;
          end;
var PSP:u; {Указатель списка}
     ch:Char;

procedure Create_list(Var PSP:U);
Var Q, {указатель предыдущего элемента списка}
    P:U;{Указатель текущего элемента списка}
    Ch:Char;
Begin
      New(Q);
      Write('Vvedite inform.pole elementa :  ');
      Readln(Q^.Inf);
      PSP:=Q;
      Write('Prodoljit'' vvod ? y/n ');
      Readln(ch);
      while Ch in ['y','Y','н','Н'] do
      begin
        New(P);
        Write('Vvedite inform.pole elementa :  ');
        Readln(P^.INF);
        Q^.ukz:=P;
        Q:=P;
        Write('Prodoljit'' vvod? y/n ');
        Readln(ch);
      end;
      Q^.ukz:=nil;
end;


procedure print_list(PSP:u);
{Процедура печати элементов списка.PSP-указатель списка}
var t:u;
 begin
  if PSP=nil then
   begin
      Writeln('Spisok pust');
      Readkey;
      Exit;
   end;
  Writeln('Soderjimoe spiska: ');
  t:=PSP;
  while t<>nil do
   begin
    write(t^.inf,'--> ');
    t:=t^.ukz;
   end;
  Writeln('NIL');
  Writeln('Najmite ljubuju klavishu');
  ReadKey;
 end;

procedure del_chnode (var PSP:U);
var Q,P:U;
Begin
P:=PSP;
 while(P^.Ukz<>nil) do
   Begin
     Q:=P;
     P:=P^.ukz;
   end;
  if P^.inf div 2 =0 then
     begin
       Q^.ukz:=P^.ukz;
       P:=P^.ukz;
       Dispose(P);
     End;
     While P<>nil do
        begin
          write(P^.inf,'-->');
          P:=P^.Ukz;
        end;

End;

procedure destroy_list(var PSP:u);
{Процедура освобождения памяти,занятой элементами списка.PSP-указатель списка}
var t:u;
 begin
    while PSP<>nil do
     begin
      t:=PSP;
      PSP:=PSP^.ukz;
      dispose(t); {Освобождение памяти}
     end;
 end;



begin
  PSP:=nil;
 repeat
    ClrScr;
    Writeln('1.Sozdat'' spisok ');
    Writeln('2.Prosmotret'' spisok');
    Writeln('3.Udalit'' 2 elementa spiska,stojashih pered poslednim');
    Writeln('4.Udalit'' spisok');
    Writeln('-------------------------------------------------------');
    Writeln('0.Vihod');
    Writeln;
    write('Vash vibor: ');
    ch:=ReadKey;
    Writeln(ch);
    Writeln;
    case ch of
     '1': begin
            psp:=nil;
            Create_list(PSP);
          end;
     '2':print_list(PSP);
     '3':del_chnode(PSP);
     '4': begin
             destroy_list(PSP);
             Writeln('Spisok udalyon');
             ReadKey;
          end;
    end;
 until ch='0';
end.
vladis222 вне форума   Ответить с цитированием

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

По этим ссылкам обсуждения которые так или иначе схожи с вашим

Работа с матрицами
Моя первая работа
Моя первая работа
Работа болгаркой.
Работа

Ads

Яндекс

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

Опции темы
Опции просмотра

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

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




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

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