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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Двунаправленный список
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


Привет!
Поняв предидущую ошыбочку я переделала темку на:

Задание на Pascal-е:
------------------------------------------------------------------------------------------
"Нужно создать двунаправленный список. Информационую часть
заполнить с помощю random. Создать процедуру которая
будет добавлять 1 елемент после елемента первое поле которого >0.
Информационие поля типу - real+real. Количество елементов в списку - 5"
-------------------------------------------------------------------------------------------

мне тут помогли мемножно но... не до конца (


program SOD_L3;
uses crt;
Type mem=^element;
element=record
inf1:real;
inf2:real;
next:mem;
prev:mem;
end;

var first,list,key,x:mem;
i,c:integer;
begin
clrscr;
randomize;
New(first);
first^.next:=nil;
first^.prev:=nil;
first^.inf1:=random(20);
first^.inf2:=random(20);
x:=first;
for i:=1 to 5 do
begin
New(x^.next);
x:=x^.next;
x^.inf1:=random(20);
x^.inf2:=random(20);
x^.next:=nil;
end;
{--------------------------------------}
writeln(' -Spisok-');
writeln('______________________');
list:=first;
c:=0;
while list^.next <> nil do
begin
c:=c+1;
write('|',c,'|',list^.inf1:6:2);
writeln(' |',c,'|',list^.inf2:6:2,' |');
list:=list^.next;
end;
{-----------------------------------------}
writeln;
for i:=1 to 5 do
begin
while list^.next <> nil do
begin
if list^.inf1>0 then list^.inf2:=-1;

end;
end;

Dispose(list);

readln;
end.





//я очень рада что на форуме есть девочки и
на деюсь и на их помощь :-)
И кстати зайдите в мой фото альбом...

Добавлено через 2 мин.
------------------------------------------------------
Да, может кто-то имеет панятнинькую инфу?
Шлите, буду рада :-)
------------------------------------------------------


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


Тебе уже давали эту процедуру:
Procedure Add_tuda_posle (first: sp; k: integer);  {добавление после к-того элемента}
Var h: integer;
x, p, q: sp;
Begin
q:= first;
For h:=1 to k-1 do q:= q^.next;
New (x);
Writeln ('?');
Readln (x^.i);
p:= q^.next;
q^.next:= x;
x^.next:= p;
x^.back:= q;
q:= p;
q^.back:= x;
End;

Попробуй переделать под свое условие..
кстати, эти вопросы остаются в силе:
Цитата
2) добавить надо после всех элементов удовлетворяющему условие или после первого/последнего?
3) что надо добавить?(какой элемент)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


нужно добавить елемент (любое число), после елемента первое поле которого больше 0.

ну я думаю усё виглядит тк:

______
7 | 8
-1 | 4 <-- от такой наверно двунаправлений список (если не ошыбаюсь, я так думаю...)
-6 | 2
0 | 12


и знач 7 больше нуль то нужно после 8 добавить елемент
тоесть от такое должно получится примерно:

7 | 8
-1 | 9 --наш новые елемент
-6 | 4
0 | 2
| 12

мне обяснили что список вроде растёт такое ошущение....
от-так-вот...)))

Сообщение отредактировано: ..::Даша::.. -


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


я почти разобралася ...
а у тебя нет класной книги?
по пакалю.?


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

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

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


Элемент списка - это не одно число.. В твоем случае один элемент списка - это совокупность двух чисел и двух указателей.. Поэтому должно быть так:
7 | -5 <- первое поле больше нуля, значит добавляем после этого элемента новый
-1 | 4
-6 | 2
0 | 12

и получится

7 | -5
14 | 13 <-новый элемент.. со своими двумя числами и указателями..
-1 | 4
-6 | 2
0 | 12

добавлено: Тут тема была "поиск книг".. посмотри, может там что найдешь.. у меня нет ничего в электронном варианте..

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


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


но если у тебя есть совет
на щёт того что я на писала
то я жду...
:-)

Добавлено через 1 мин.
а то есть он тока так может "рости"?


Добавлено через 2 мин.


-----------------------------------
но подожди яже начебно
разпределила в памяти два поля?
inf1
inf2


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

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

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


в смысле будет увеличиваться количество элементов? да. ..если, конечно, найдется хоть один, с первым полем > 0 ))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


-----------------------------------
и что получается я не могу
в поле inf1 добавить толька
один елемент а поле inf2
незатрагивать...


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

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

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


Цитата
но подожди яже начебно
разпределила в памяти два поля?
inf1
inf2

И что тебя смущает?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


то да мне так сказали что
пример:
1__|___4
-5_|___10
6__|___2


то будет

1__|___4
-5_|___x <--new element
6__|___10
___|___2
___|___x <--- new element

==========================


Добавлено через 1 мин.
и ето называется двунаправленый список.

или же то что ты предложыла на самом дели
есть двунапр. список?


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

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

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


А что тебе мешает сделать так smile.gif
list^.inf1:=random(10);
list^.inf2:=random(10);


Тебе же надо полностью создать новый элемент, значит и его оба поля inf заполняешь..

Добавлено через 4 мин.
Даша, здесь дело не в количестве полей inf, как в массиве, а в указателях.
В однонаправленном списке у тебя есть указатель только на следующий элемент.. и двигаться ты поэтому можешь только в одном направлении.. А в двунаправленном каждый элемент содержит указатели на следующий и предыдущий элементы.. значит от какого-то n-го элемента можно идти как к последнему элементу, так и к первому.. поэтому список и называется двунаправленным smile.gif

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


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


Айрочка, вопросик:
а как бы ты поступила если тебе дали такое задание?

Добавлено через 2 мин.
------------------------------------
то есть тот кусочек кодика
и есть решение моей проблемки?


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Профи
****

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

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


так как описала выше (если ты насчет того, куда добавлять элемент).. только я не очень поняла, сколько же полей inf должно быть в элементе.. 1 или 2.. real+real - это означает, что 2? но, в принципе, это не самое главное.. задание то скорее на работу с указателями.. чем на количество полей в элементе..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


-------------------------------------------
я вижу "compiler" читает тему :-)
може ты поможеш? а...


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Профи
****

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

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


Цитата
то есть тот кусочек кодика
и есть решение моей проблемки?

Не совсем.. тебе нужно его немного переделать.. чтобы он добавлял элемент имеено тогда, когда тебе нужно.
Главное в нем это:
допустим тебе нужно воткнуть элемент между 1-м и 2-м
New (x); <-создали ссылку на добавляемый элемент
Writeln ('?');
Readln (x^.i); <-создали элемент
p:= q^.next; <-запомнили указатель на 2-й элемент
q^.next:= x; <- теперь поле next первого элемента указывает на добавленный
x^.next:= p; <- а next добавленного на 2-й
x^.back:= q; <- и pred на первый
q:= p;
q^.back:= x; <- полю pred 2-го присвоили указатель на добавленный



Даш, тебе вообще понятно, что из себя представляет список?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


ну не совсем?
може коротко обясниш?


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Michael_Rybak
*****

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

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


Цитата
я вижу "compiler" читает тему :-)
може ты поможеш? а...


да, может, вообще все мы тебе дружно понапомогаем, а ты выберешь, кто помог лучше всех?

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


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


я очень благодарна за помощь
и никого не хочу обидеть...(((
мне просто нужна помощь...я же не профм((((


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Человек
*****

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

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


Цитата
я вижу "compiler" читает тему :-)
може ты поможеш? а...
спасибо, мне хватило прошлого топика.. давненько уже не возникали такие конфликты..

upd
скажи спасибо лучше Айре, мне б столько терпения не хватило...

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Даша

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


.?update

Сообщение отредактировано: ..::Даша::.. -


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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