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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2007, 22:39   #1
_ares_
Пользователь
 
Регистрация: 12.11.2007
Сообщений: 31
Вопрос Динамический массив

Вообщем есть небольшая проблемка. Не работает процедура уделения записи по заданному полю(((
Код:
type
   spisok = record
       nomer: word;
       fio: string[31];
       nam: string[3];
       posob: real;
       end;
   type_ukaz=^type_dinSpis;
   type_dinSpis=record
               info :spisok;
               ukaz :type_ukaz;
      end;
var
i,j,n:Integer;
f_input : text;
    beg_spis, st,sp:type_ukaz;
procedure udal;
var
sk,sn:type_ukaz;
begin
  sk:=beg_spis;
  sn:=beg_spis;
  st:=beg_spis;
  if (st^.ukaz=nil) then
    begin
    beg_spis:=beg_spis^.ukaz;
    dispose(st);
    end
  else
  begin
   while st<> nil do
         begin
         with st^.info do Begin
              if nam<='p' then
                 begin
               {думаю что здесь не то но что?:confused: }
                 sk^.ukaz:=st^.ukaz;
                 dispose(st);
                 st:=sk;

                 end
                 else
                   begin
                   sn:=st;
                   st:=st^.ukaz;
                   end;
                 end;
         end;
   end;
end;
{для общего сведения}
procedure vivod;
   begin
        st:= beg_spis;
        while st <> nil do
              begin
              with st^.info do
                   writeln ('*',nomer,'*',fio,'*',nam,'*', posob:0:2,'*');
              st:=st^.ukaz;
              end;

Последний раз редактировалось Alex21; 20.12.2007 в 08:51. Причина: оформляем код с использованием тегов -кнопка #code
_ares_ вне форума Ответить с цитированием
Старый 19.12.2007, 23:28   #2
n@sok
Пользователь
 
Регистрация: 24.11.2007
Сообщений: 46
По умолчанию

Цитата:
{думаю что здесь не то но что? }
sk^.ukaz:=st^.ukaz;
А чему здесь равен указатель sk? Судя по алгоритму он должен указывать на предыдущий отностительно st элемент, но почему-то в программе он нигде не изменяется.
Код:
procedure udal;
var
sn:type_ukaz;
begin
sk:=beg_spis;
sn:=NIL;
while st<> nil do
begin
with st^.info do Begin
if nam<='p' then
begin
if sn<> NIL then
sn^.ukaz:=st^.ukaz
else
beg_spis:=st^.ukaz;
dispose(st);
st:=sn;
end;
sn:=st;
st:=st^.ukaz;
end;
end;
end;
n@sok вне форума Ответить с цитированием
Старый 26.12.2007, 22:03   #3
_ares_
Пользователь
 
Регистрация: 12.11.2007
Сообщений: 31
По умолчанию

Все по суте должно быть правильно но эта процедура должна удалять записи начинающиеся на "P" а она наоборот их выводит.
Код:
procedure udal_new;
  var
sn:type_ukaz;
begin
{sk:=beg_spis;}
(*
st:= beg_spis;
        while st <> nil do
              begin
              with st^.info do
                   writeln ('*',nomer,'*',fio,'*',nam,'*', posob:0:2,'*');
              st:=st^.ukaz;
*)
sn:=NIL;
while st<> nil do
begin
with st^.info do Begin
if nam<='p' then
begin
if sn<> NIL then
sn^.ukaz:=st^.ukaz
else begin
beg_spis:=st^.ukaz;
dispose(st);
st:=sn;
end;    end;
sn:=st;
st:=st^.ukaz;
end;
end;
 st:= beg_spis;
        while st <> nil do
              begin
              with st^.info do
                   writeln ('*',nomer,'*',fio,'*',nam,'*', posob:0:2,'*');
              st:=st^.ukaz;  end;
end;
// Для оформления кода используй кнопку # code

Последний раз редактировалось Alex21; 27.12.2007 в 07:39.
_ares_ вне форума Ответить с цитированием
Старый 26.12.2007, 23:54   #4
n@sok
Пользователь
 
Регистрация: 24.11.2007
Сообщений: 46
По умолчанию

Можно попробовать применить условие
if nam[1] = 'p' then
вместо
if nam <= 'p' then
и незабыть расскоментировать строчку
st := beg_spis;
в начале процедуры
n@sok вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамический массив Dimon Паскаль, Turbo Pascal, PascalABC.NET 3 21.03.2008 18:08
динамический массив Diller Помощь студентам 48 07.10.2007 16:43
Динамический массив. Mickle Помощь студентам 9 21.06.2007 20:31
Динамический массив Mickle Общие вопросы Delphi 8 19.06.2007 06:45
Динамический массив + Dll. LEKA Общие вопросы Delphi 7 11.05.2007 20:05