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

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

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

 
 Ответить  Открыть новую тему 
> Динамические структуры данных, 2 задачи
сообщение
Сообщение #1


Новичок
*

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

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


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

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

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


Гость






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

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

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


Новичок
*

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

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


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

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


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


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



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


Гость






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


Новичок
*

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

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


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


Гость






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

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

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

Сообщение отредактировано: Altair -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


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

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

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


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


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


Гость






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

begin
clrscr;
first:=nil;

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

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

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

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


Новичок
*

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

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


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

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


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

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

Репутация: -  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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


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

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

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


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


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


Новичок
*

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

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


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


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

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

Репутация: -  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

 





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