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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2012, 18:31   #1
Julichka1k
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 30
По умолчанию Динамические переменные указатели (программа на паскаль)

Код:
program dinam;
type
point=^ct;
ct=record
         i:integer;
         p:point;
     end;
var
x,y:integer;
a,b,aa,a1,b1:point;
procedure vvod(x:integer; var a,b:point);
var j:integer;
begin
     b:=nil;
     for j:=1 to x do
       begin
         new(a);
         writeln('введите элемент');
         readln(a^.i);
         a^.p:=b;
         b:=a;
       end;
end;

Procedure zam (a,a1:point; var a2:point);
var d:point;
    v:integer;
Begin
     writeln('введите V:');
     readln(v);
       d:=nil;
       while a^.i<>v do
         begin
         new(a2);
         a2^.i:=a^.i;
         a2^.p:=d;
         a:=a^.p;
         d:=a2;
         end;
       if a^.p=nil then
         writeln('нет v')
       else
         begin
            a^.p:=b;
              while  a1^.p<>nil do
                a1:=a1^.p;
                a1^.p:=d;
         end;
     end;
procedure prin(pr:point);
 begin
    while pr<>nil do
      begin
      writeln(pr^.p);
      pr:=pr^.p;
      end;
 end;
 Begin
      writeln('введите количество элементов списка i');
      readln(x);
      writeln('введите количество элементов списка i1');
      readln(y);
      vvod(x,a,b);
      vvod(y,a1,b1);
      zam(a,a1,aa);
      prin(aa);
 End.
В процедуре zam (замены) программа вылетает, что не правильно, не могу найти ошибку.

____
Когда пытаетесь применить форматирование тегом [CODE]..[/СODE] (это кнопочка с решёточкой #),
не забывайте ВЫДЕЛИТЬ у себя фрагмент кода.
должно быть:
[CODE]
тут Ваша программа
исходный код
[/СODE]

Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.04.2012 в 19:38.
Julichka1k вне форума Ответить с цитированием
Старый 23.04.2012, 19:00   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

В процедуре procedure prin(pr: point); ... writeln(pr^.p); , а точно не writeln(pr^.i);?
Код:
 while a^.i<>v do
 begin
 new(a2);
 a2^.i:=a^.i;
 a2^.p:=d;
 a:=a^.p;
 d:=a2;
 end;
while a^.i<>v do//а если нет совпадения то цикл бесконечен, и при выходе за границы списка возникает ошибка. Надо сравниватьс nil и уже потом ставить условие if a^.i<>v do ...
eoln вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
«Динамические переменные языка Паскаль. Указатели» Anton94.by Паскаль, Turbo Pascal, PascalABC.NET 6 14.05.2012 01:44
Паскаль. Динамические переменные McFrey Помощь студентам 9 01.04.2012 20:22
Паскаль. Динамические переменные Pepsik Помощь студентам 4 15.07.2011 06:33
Динамические переменные и указатели DjedayD Паскаль, Turbo Pascal, PascalABC.NET 0 03.05.2011 09:16