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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Двунаправленный список
..::Даша::..
сообщение 14.05.2008 17:34
Сообщение #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 
 К началу страницы 
+ Ответить 
Айра
сообщение 14.05.2008 17:58
Сообщение #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 
 К началу страницы 
+ Ответить 
..::Даша::..
сообщение 14.05.2008 18:28
Сообщение #3


Новичок
*

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

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


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

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

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


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

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

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

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


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


Новичок
*

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

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


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


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


Профи
****

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

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


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

и получится

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

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

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


Новичок
*

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

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


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

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


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


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


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


Профи
****

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

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


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


Новичок
*

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

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


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


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


Профи
****

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

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


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

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


Новичок
*

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

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


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


то будет

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

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


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

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


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


Профи
****

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

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


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


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

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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
..::Даша::..
сообщение 14.05.2008 19:22
Сообщение #12


Новичок
*

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

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


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

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


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


Профи
****

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

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


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


Новичок
*

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

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


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


--------------------
// Дарья - сильная, побеждающая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 14.05.2008 19:44
Сообщение #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 
 К началу страницы 
+ Ответить 
..::Даша::..
сообщение 14.05.2008 19:52
Сообщение #16


Новичок
*

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

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


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


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


Michael_Rybak
*****

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

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


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


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

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


Новичок
*

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

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


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


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


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

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

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


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

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

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


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


Новичок
*

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

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


.?update

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


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

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

 



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