IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Списки, Не получается никак!
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Валентин

Репутация: -  0  +


предположим, что уже построен и задан указателем P однонаправленный список элементами которого являются целые числа. Написать программу, которая из списка P удаляет все вхождения элемента E.

Подскажите, пожалуйста, как создать список в котором будут оба вида указателей - как E так и P?

Ниже я привел мои "старания", процедура построения списка и выведения на экран.



program S2L2_1 ;


type P_item1 = ^item1;
item1 = record
info : integer;
next : P_item1;
end;

type E_item2 = ^item2;
item2 = record
info : integer;
next : E_item2;
end;

var P_begin,P_temp : P_item1; E_temp: E_item2;
n : integer;


procedure Form;
var element,k : integer;
begin
randomize;
k:=20;
New(P_begin);
element:= random(10);
P_begin^.info := element;
P_begin^.next := nil;
P_temp := P_begin;
k:=k-1;
while k<>0 do
begin
element:=random(50);
new (P_temp^.next);
P_temp := p_temp^.next;
P_temp^.info := element;
P_temp^.next := nil;
element:=random(5);
new (E_temp^.next);
E_temp := E_temp^.next;
E_temp^.info := element;
E_temp^.next := nil;
k:=k-1;
end;
end;

procedure Print;
begin
P_temp := P_begin;
write(' ',P_temp^.info);
P_temp := P_temp^.next;
while E_temp <> nil do
begin
write(' ',P_temp^.info);
P_temp := E_temp^.next;
write(' ',E_temp^.info);
E_temp := P_temp^.next;
end;
writeln;
end;



begin

Form;
Print;
readln;

end.


Это конечно же не работает... Но я уже не знаю что еще можно сделать...
помогите пожалуйста, у меня уже нет сил издеваться над этой задачей...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Валентин

Репутация: -  0  +


Задачи, пусть задачи...

type P_item = ^item;
item = record
info : integer;
next : P_item;
end;
{Тут строиться список}
var P_begin,P_temp : P_item;
n, e, x : integer;
procedure Form;
var element,k : integer;
begin
randomize;
k:=random(100);
New(P_begin);
element:= random(20);
P_begin^.info := element;
P_begin^.next := nil;
P_temp := P_begin;
k:=k-1;
while k<>0 do
begin
element:=random(10);
new (P_temp^.next);
P_temp := p_temp^.next;
P_temp^.info := element;
P_temp^.next := nil;
k:=k-1;
end;
end;

{Тут мы выводим его на экран}
procedure Print;
begin
P_temp := P_begin;
while P_temp <> nil do
begin
write(' ',P_temp^.info);
P_temp := P_temp^.next;
end;
writeln;
end;

{Удаление Е из списка}
procedure DelE;
begin
writeln('BBedume E');
readln(E);
P_temp := P_begin;
while P_temp <> nil do;
begin
x:=P_temp^.info;
if x=e then
Begin
P_temp := P_temp^.next;
P_temp^.next := P_temp^.next^.next;
Dispose(P_temp);
end
else P_temp := p_temp^.next;
end;
end;

begin
Form;
Print;
DelE;
Print;
readln;
end.




тока теперь она виснет, где ошибка? Подскажите плз
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.09.2025 12:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name