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

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

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

> Динамические структуры данных, 2 задачи
neZvezda
сообщение 15.11.2005 18:03
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский

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


1) Составить программу, которая удаляет из списка L все элементы E, если таковые имеются.

2) Составить программу, которая переносит в конец непустого списка L его элемент.

как почитала в Faq, надо использовать 1.создание, 2.вывод, 3.поиск и 4.удаление? Или что-то еще?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 15)
volvo
сообщение 15.11.2005 18:08
Сообщение #2


Гость






Цитата
Или что-то еще?

Нет, больше ничего использовать не нужно. Перечисленных 4-х операций вполне хватит. С самой реализацией списка разобралась? Кстати, какой должен быть список? Одно- или двухсвязный?

Цитата
2) Составить программу, которая переносит в конец непустого списка L его элемент.
Здесь, часом, ничего не пропущено? КАКОЙ элемент переносить в конец списка?
 К началу страницы 
+ Ответить 
neZvezda
сообщение 15.11.2005 18:19
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский

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


Цитата
Или что-то еще?

Нет, больше ничего использовать не нужно. Перечисленных 4-х операций вполне хватит. С самой реализацией списка разобралась? Кстати, какой должен быть список? Одно- или двухсвязный?


Если честно, то вобще без понятия как делать. А список односвязный.


Цитата
Составить программу, которая переносит в конец непустого списка L его элемент.
Цитата
Здесь, часом, ничего не пропущено? КАКОЙ элемент переносить в конец списка?



Вот как дали задание, так и написала. Больше ничего не говорится.
В данному случае, мне кажется, что для 1ого можно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.11.2005 18:24
Сообщение #4


Гость






To: neZvezda
Погоди, но ведь здесь: FAQ: Списки реализованы ИМЕННО те операции, которые тебе нужны blink.gif Что же, все это еще раз переписывать? Тогда, извини, а зачем вообще FAQ пишется???
 К началу страницы 
+ Ответить 
neZvezda
сообщение 15.11.2005 18:30
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский

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


Реализованы-то они реализованы. Но когда я компиллирую, то вылезает тысяча и одна ошибка. И зачем такой Faq - я на знаю=))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.11.2005 18:32
Сообщение #6


Гость






А вот с этого места поподробней. Где именно ошибки, программу приведи. НО !!! Если НЕ ДАЙ БОГ, у меня не будет ошибок - то я приму соответствующие меры, договорились?

Я смотрю, критиковать тут все мастера. dry.gif

криворуким и FAQ не поможет!

Сообщение отредактировано: Altair - 15.11.2005 18:40
 К началу страницы 
+ Ответить 
neZvezda
сообщение 15.11.2005 18:51
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский

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


Никто никого не критикует совершенно. Я не программист в пятом колене, чтобы знать как и что делается, поэтому задаю вопросы. И если здесь всех встречают так враждебно, то зачем вобще тогда помогать друг-другу?
Принимайте любые меры, но когда у меня не получается, то я задаю вопросы и прошу объяснить. Вроде бы логично.

Ошибки скорее всего вылезают из-за того, что я чего-то недописываю в программе. Использую именно эти процедуры

1. сформировать

Type 
point = ^item;
item = record
number: integer;
next: point
end;

First: = nil;
While n>0 do
begin
New®;
r^.Next:=first;
r^.Numbe:=n;
First:=r;
n := n-1
end;




так? в факе так.


2. просмотр списка


procedure Print (first: point);
Var r: point
Begin
R: = first;
While r<>nil do
begin
Writeln ('number = ' ,r^.Number);
R:=r^.Next;
end;



3. поиск в списке

Procedure Search (first: point; x: integer; var q: point);
var
r: point;
ok: boolean;
begin
r: = first;
ok: = true;
while (r<>nil) and ok do if r^.Number=x then ok:=false else r:=r^.Next;
q: = r
end;



4. удаление


Procedure Delete(Var q: point);
Var r: point;
Begin
r:=q^.next;
q^:=r^;
r^.Next:=nil;
End;



Еще тогда главный модуль. Правильно ли?

begin
clrscr;
first:=nil;
Print(first);
Search(first);
Delete(first);
end.



Ну вот в принципе и все, что я написала. Видимо, чего-то не то.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 15.11.2005 19:00
Сообщение #8


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


а текст самой программы можно ? весь текст а не куски! give_rose.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.11.2005 19:02
Сообщение #9


Гость






Нет, не так...

begin
clrscr;
first:=nil;

{ Здесь - формирование списка !!! }

Print(first); { <--Это - правильно, печатаем то что сформировали }

Search(first);
{
Стоп. А что именно ищем? Там требуется 3 параметра, здесь есть только 1
Может, так: Search(first, E, found);
}

Delete(first);
{
И здесь неточно... Удаляем НЕ первый элемент (иначе мы потеряем весь список),
а то, что было найдено...
Вот так: If found <> nil Then Delete(found)
}
end.
Сейчас набросаю программу полностью, будет легче разобраться...
 К началу страницы 
+ Ответить 
volvo
сообщение 15.11.2005 19:36
Сообщение #10


Гость






Ну, примерно, вот так решается первая задача (это без процедур, только Print вынесен отдельно):
uses crt;
type
point = ^item;
item = record
number: integer;
next: point
end;


procedure print(first: point);
var r: point;
begin
r := first;
while r <> nil do begin
writeln('number = ', r^.Number);
r := r^.next;
end;
end;

var
p, r, first: point;
found: boolean;
n, E: integer;

begin
clrscr;
first := nil;

write('Первый элемент: '); readln(n);
while n > 0 do begin
new( r );
r^.next := first;
r^.Number := n;
first := r;
write('следующий (0 для выхода): '); readln(n)
end;

print(first); { исходный список }
write('Введите число E: '); readln(E);

repeat
{ Поиск элемента Е }
found := false;
P := first;
while not found and ( P^.Next <> nil ) do
if p^.next^.number = E then found := true
else p := p^.next;

{ Если найден - удалить }
if found then begin
r := p^.next;
p^.next := r^.next;
dispose( r )
end;

until not found; { Пока что-то находится }

{ Печатаем, что получилось }
print(first);
end.
 К началу страницы 
+ Ответить 
neZvezda
сообщение 15.11.2005 20:09
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский

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


Этот ужас заработал. smile.gif))Про вторую даже спрашивать страшно mega_chok.gif
Спасибооооооооооооооооооооо за потраченное время.
И не злитесь, plz, на меня такую неосведомленную и тупую в этом Паскале. Ну не дано.

Сообщение отредактировано: neZvezda - 15.11.2005 20:11
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 15.11.2005 20:55
Сообщение #12


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


вторая

uses crt;
Type
TElem = integer;

TList = ^TNode;
TNode = record
Info: TElem;
Next: TList
end;


procedure BListAddLast(var L: TList; E: TElem); {добавление в хвост}
var
N: TList;
P: TList;
Begin
new(N);
N^.Info :=E;
N^.Next :=nil;
if L= nil then L:=N else
begin
P:=L;
while P^.Next <> nil do P:=P^.Next;
P^.Next:=N
end
End;

function BListDelElem1(var L: TList; E: TElem): boolean;
var
N: TList;
P: TList;
found: boolean;
begin
found:=false;
if L<>nil then if L^.Info =E then begin
found:=true;
N:=L;
L:=L^.Next;
dispose(N)
end else begin
P:=L;
while not found and (P^.Next <> nil) do if P^.Next^.Info = E then found:=true
else P := P^.Next;
if found then begin
N := P^.Next;
P^.Next := N^.Next;
dispose(N)
end
end;
BListDelElem1:=found
end;


procedure BListPrint(L: TList );
begin
write('[ ');
while L <> nil DO
begin
write( L^.Info );
If L^.Next <> nil then write(' | ');
L := L^.Next
end;
writeln(' ]')
end;

procedure ListClear ( var L: TList );
var
N: TList;
begin
while L <> nil do
begin
N :=L;
L:=L^.Next;
dispose(N)
end
end;
var
c,i,N:integer;
A:Tlist;

Begin
write('Введите число элементов списка : ');readln(n);
A:=nil;
writeln('Ввод элементов (элементы добавляются в хвост');
for i:=1 to n do begin
write('введите ',i,' элемент: '); readln©;
BListAddLast(A,c);
end;
ClrScr;
writeln('Вы ввели список :'); BlistPrint(a);
write('Введите элемент которые необходимо перенести в конец: '); readln( с );
if BlistDelelem1(A,c) then begin
BlistAddLast(a,c) ;
writeln('полученный список:');
BListPrint(a);
end else writeln('элемент не найден!');
readln;
ListClear(a);
End.



трава "FAQ: CTRL+C -> CTRL+V" (С) Вставляет!!!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.11.2005 21:12
Сообщение #13


Гость






To: Altair
!smoke2.gif
uses crt;
type
point = ^item;
item = record
number: integer;
next: point
end;


procedure print(first: point);
var r: point;
begin
r := first;
while r <> nil do begin
writeln('number = ', r^.Number);
r := r^.next;
end;
end;

var
p, r, first, save: point;
found: boolean;
i, n, E: integer;

begin
clrscr;
first := nil; i := 0;

write('first element: '); readln(n);
while n > 0 do begin
new( r );
r^.next := first;
r^.Number := n;

if i = 1 then save := r;
inc(i);

first := r;
write('next element (0 to exit): '); readln(n)
end;

writeln('before:');
print(first);

r := save^.next;
save^.next := r^.next;
r^.next := first;
first := r;

writeln('after:');
print(first);
end.
 К началу страницы 
+ Ответить 
Altair
сообщение 15.11.2005 21:21
Сообщение #14


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


volvo, а не попробовать ли траву Сквозного? blum.gif
lol.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
neZvezda
сообщение 15.11.2005 21:32
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский

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


Всем спасибо за помощь! Вы мне очень помогли smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 15.11.2005 21:37
Сообщение #16


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


give_rose.gif wub.gif wub.gif give_rose.gif d3.gif blush.gif !kiss4.gif !flowers.gif air_kiss.gif angel.gif kiss2.gif заходи еще smile.gif
он поможет smile.gif
lol.gif blum.gif blum.gif blum.gif blum.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 24.06.2025 2:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"