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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2010, 14:25   #1
AHD
 
Регистрация: 09.12.2010
Сообщений: 3
По умолчанию Где ошибка в программе? Списки. Стеки. Паскаль

Вот условие:
Опишите и постройте с помощью двумерного массива Sps линейный однонаправленный список из пяти целых чисел и сделайте этот список пустым. После этого добавьте в список четыре элемента 9,8,7,6, затем найдите указатель на элемент 8 и удалите этот элемент. В конце работы со списком вставьте после элемента со значением 6 элемент со значением 5, предварительно отыскав указатель на элемент со значением 6, а элемент со значением 15 вставьте после элемента со значением 9.

Вот решение (в нём где-то ошибка):
Код:
Const  maxel=7;
Type Spis=array[1..2,1..maxel] of integer;
Var Assm, Afe : integer; 	{ Assm указывает индекс/адрес первого элемента в списке свободных мест}{ Afe – индекс (адрес) первого элемента в списке. }
El,i,pap,j:integer;
Sps:Spis;
Procedure Nspis(Var Sps:Spis); {процедура оформления пустого списка}
Begin
for i:=1 to maxel-1 do
Sps[2,i]:=i+1;
Sps[2,maxel]:=0;
Assm:=1;
Afe:=0;
end;
Procedure Addsp(Var Sps:Spis); {процедура добавления элемента в список}
Var   Asmn:integer;
Begin
Asmn:=Sps[2,Assm];
Sps[1,Assm]:=el;
Sps[2,Assm]:=Afe;
Afe:=Assm;
Assm:=Asmn
end;
Procedure DelSp(Pap,j:integer; Var Sps:Spis); {процедура удаления элемента из списка}
Begin
Sps[2,Pap]:=Sps[2,j];
Sps[2,j]:=Assm;
Assm:=j
end;
Procedure UstSp(j:integer; Var Sps:Spis); {процедура вставки элемента в список}
Var  Asmn:integer;
Begin
Asmn:=Sps[2,Assm];
Sps[2,Assm]:=Sps[2,j];
Sps[2,j]:=Assm;
Sps[1,Assm]:=El;
Assm:=Asmn;
end;
Procedure PoshSp(Var Sps:Spis; el:integer; Var Pap,j:integer); {процедура поиска указателя (адреса) на элемент списка}
Begin
j:=Afe;
Pap:=0;
While (Sps[1,j]<>el) and (j<>0) do
Begin
Pap:=j;
 j:=Sps[2,j];
end;
if j=0 then Writeln('Элемент не найден')
end;
BEGIN {Основная программа}
Nspis(Sps); {построение пустого списка}
for i:=1 to 4 do
begin
write(‘el[‘,i,’]=’);
readln(el);
Addsp(Sps) {добавление элементов  в список по одному}
end;
el:=8; {найденный указатель j,  pap – предыдущий указатель}
PoshSp(Sps,el,pap,j); {поиск указателя на элемент со значением 8}
Delsp(pap,j,sps); {удаление элемента с указателем j}
el:=6;
PoshSp(Sps,el,pap,j); {поиск указателя на элемент со значением 6}
el:=5;
Ustsp(j,Sps); {вставка элемента со значением 5 после элемента со значением 6}
el:=9;
PoshSp(Sps,el,pap,j); {поиск указателя на элемент со значением 9}
el:=15;
Ustsp(j,Sps); {вставка элемента со значением 15 после элемента со значением 9}
END.
Оформляем код правильно!

Последний раз редактировалось alex_fcsm; 10.12.2010 в 14:32.
AHD вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где в этой программе ошибка: Оля_1991 Помощь студентам 4 04.10.2010 12:20
Где в программе ошибка? Warfvare Помощь студентам 3 22.06.2010 15:26
подробнее о программе где сравнение массивов moda Паскаль, Turbo Pascal, PascalABC.NET 2 21.03.2010 15:19
С++ Ошибка в программе EwwwA Общие вопросы C/C++ 5 05.01.2009 23:12
Подскажите, где в программе ошибка gamer123 Паскаль, Turbo Pascal, PascalABC.NET 3 25.02.2008 03:09