Программа должна содержать меню с перечнем возможностей работы со списком и оператор выбора соответствующего пункта меню с обращением к подпрограмме ( процедуре или функции ), реализующей выбранное действие над списком.
Задание 1 Описать подпрограмму вставки одного или нескольких элементов в спи-сок. Подпрограмма должна обеспечивать возможность после её вызова выдавать сообщение в случае невозможности вставки с указанием причины
1)(само условие задание №1) Вставить новый элемент после каждого нулевого элемента
Задание 2 Описать подпрограмму удаления одного или нескольких элементов спи-ска. Подпрограмма должна обеспечивать возможность после её вызова выдавать сообщение в случае невозможности удаления с указанием причины 2)Удалить из списка первый нёчетный элемент
отдельный модуль реализовывать на графе (меню)?
обычная программка, которая с помощью уже описанных функций добавляет и если все сделано успешно - выдает сообщение о результате.
1)(само условие задание №1) Вставить новый элемент после каждого нулевого элемента
Это если встречаем в списке 0 то вставляем за ним?
первый нечетный...значит проверяем поля каждого элемента списка и смотрим если нечетный то удаляем его?
Если я правильно вас понял,тогда да в отдельном,по идее должен инициализироваться модуль с меню при запуске,пользователь должен выбрать определенный пункт итд
procedure menu_case;
var ch:integer;
begin
writeln('Программа для работы с линейным списком');
writeln('');
writeln('Выберите действие');
writeln('1)включение элемента в ЛС');
writeln('2)исключение элемента из ЛС');
writeln('3)Чтение текущего элемента');
writeln('4)перейти в начало списка');
writeln('5)Перейти в конец списка');
writeln('6)Перейти к i-му элементу ЛС');
writeln('7)Длинна списка');
writeln('8)Список пуст?');
writeln('9)Список полон?');
writeln('');
write('Ваш выбор: ');
readln(ch);
case ch of
1:
2:
3:
4:
5:
6:
7:
8:
9:
end;
clrscr;
writeln('Действие ',ch,'Совершено');
delay(300); //подключить модуль CRT надо
end;
procedure Insert(start:link; y:integer);
var p, {текущий указатель}
q:link; {указатель на новый элемент}
begin
p:=start;
while p<>nil do
begin
if p^.inf=0 then
begin {создание и вставка нового элемента}
new(q);
q^.inf:= y;
q^.next:=p^.next;
p^.next:=q;
p:=p^.next^.next
end
else p:=p^.next
end
end;
это обязательные подпрограаммы,соответственно необходимы пункты в меню
1) создание списка добавлением нового элемента в начало списка (данные вводятся с клавиатуры или из текстового файла);
2) создание списка добавлением нового элемента в конец списка (данные вводятся с клавиатуры или из текстового файла);
3) просмотр списка (проход по списку с выдачей на экран значений ин-формационных полей списка );
4) уничтожение списка ( проход по списку с удалением элемента списка );
также 1 и 2 задание
procedure Insert(start:link; y:integer);
begin
p:=start;
while p<>nil do
begin
if p^.inf=0 then
begin {создание и вставка нового элемента}
new(q);
q^.inf:= y;
q^.next:=p^.next;
p^.next:=q;
p:=p^.next^.next
end
else p:=p^.next
end
end;
program CD5;
uses List3;
type K_St=record
K:integer;
St:byte;
end;
var P,q:List;
r:K_St;
N:word;
i,c:integer;
begin
InitList(P,sizeof(K_St));
InitList(q,sizeof(K_St));
writeln('Vvedite N - stepen mnogochlena Q');
read(N);
writeln('Vvedite mnogochlen Q sled.obr. - koef ai, i=n..0');
for i:=0 to N do
begin
read(c);
if c<>0 then
begin
r.K:=c;
r.St:=N-i;
PutList(Q, r)
end;
end;
{BeginPtr(Q);
writeln;
repeat
MovePtr(Q);
ReadList(Q, r);
write(r.K,' ')
until EndList(Q)=true; }
BeginPtr(Q);
repeat
Moveptr(Q);
if K_St(Q.ptr^.data^).St=1 then
begin
r.K:=K_St(Q.ptr^.data^).K;
r.ST:=0;
PutList(P,r)
end
else
if K_St(Q.ptr^.data^).ST<>0 then
begin
r.K:=(K_St(Q.ptr^.data^).K)*(K_St(Q.ptr^.data^).St);
r.St:=K_St(Q.ptr^.data^).St-1;
PutList(P, r);
end;
Until EndList(Q)=true;
write('P(x)=');
BeginPtr(P);
repeat
MovePtr(P);
ReadList(P, r);
if K_St(P.ptr^.data^).K>0 then
write('+');
if K_St(P.ptr^.data^).St=1 then
write(r.K,'x')
else
if K_St(P.ptr^.data^).St<>0 then
write(r.K,'x^',r.St)
else
write(r.K);
until EndList(P)=true;
readln;
readln;
end.
Type powl:^owl;
info: integer;
owl=record
inf: integer;
next: powl;
end;
x:info
p^.info:=x;
Задание на списки(задание скопированы с методички),среда pascal abc
while head<>nil do
Код :
Type powl:^owl;
info: integer;
owl=record
inf: integer;
next: powl;
end;
Внимательно посмотрите, все ли тут правильно написано?
Раздел TYPE двоеточия?
типы поля в RECORD?
Вы определитесь либо
Код :
x:info
либо
Код :
p^.info:=x;
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.