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

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

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

3 страниц V < 1 2 3 >  
 Ответить  Открыть новую тему 
> Задача на списки
сообщение
Сообщение #21


Пионер
**

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

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



Вот так вот:
1. исходный список: <5, 6, 7, 8, 9> элемент P = 7
2. текущий элемент = 5, меньше P, оставляем без изменения получем <5, 6, 7, 8, 9>
3. текущий элемент = 6, меньше P, оставляем без изменения т.к. он и так 2-ой получем <5, 6, 7, 8, 9>
4. текущий элемент = 7, равен P, переносим еговначало но после 5 т.к. 5 это начало списка получем <5, 7, 6, 8, 9>
5. текущий элемент = 8, больше P, переносим в конец получем <5, 6, 7, 9, 8>
6. текущий элемент = 9, больше P, переносим в конец получем <5, 6, 7, 8, 9>
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Пионер
**

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

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


Вот еще вопрос появился smile.gif, я список перегнал в однородный массив и как мне теперь вставить элемнт между элементами массива... Например есть массив <1 2 3 4 5 6> как мне всавить 3 между единицей и 2 чтобы получилось так <1 3 2 4 5 6>
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #23


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

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

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


Цитата(dream-x @ 4.05.2008 22:17) *
Вот еще вопрос появился smile.gif, я список перегнал в однородный массив и как мне теперь вставить элемнт между элементами массива... Например есть массив <1 2 3 4 5 6> как мне всавить 3 между единицей и 2 чтобы получилось так <1 3 2 4 5 6>
не захотел делать с деками - ладно, но зачем сувать сюда массивы? та за такое... или у тебя задания придумать самый НЕ оптимальный способ?
это же список, тут вся прелесть в работе с указателями....
насчёт массива, если он статический -- вставляешь в нужное место, а остальные сдвигаешь, если динамический - в зависимости от реализации..


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


Пионер
**

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

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


Цитата(compiler @ 5.05.2008 15:06) *

не захотел делать с деками - ладно, но зачем сувать сюда массивы? та за такое... или у тебя задания придумать самый НЕ оптимальный способ?
это же список, тут вся прелесть в работе с указателями....
насчёт массива, если он статический -- вставляешь в нужное место, а остальные сдвигаешь, если динамический - в зависимости от реализации..

Массивами это я как вариант...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #25


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

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

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


Цитата(dream-x @ 5.05.2008 18:24) *
Массивами это я как вариант...
смотрим примеры работы со списками и пишем аналогично(примеры можно взять с любого учебника или поискать по форуму)


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


Пионер
**

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

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


Задание слегка изменилось но суть таже... Составить программу вставки элемента O после каждого элемента списка, превышающее некоторое значение Р.
Вот код... но есть проблема он стирает последующие символы...

Program Spisok;
Uses CRT;
Type
TData=integer;
PLink=^TElement;
TElement=Record
Data:TData;
Link:PLink;
End;
{----------------}
Procedure InPutList(Var List:PLink);
Var
ElNew:PLink;
Value:TData;
i,n:Integer;
Begin
ClrScr;
WriteLn('vvedite kol-vo elementov spiska ');
ReadLn(n);
{ List:=NIL;}
For I:=1 To n Do
Begin
WriteLn('vvedite ',i,' element');
Read(value);
New(ElNew);
ElNew^.Data:=Value;
ElNew^.Link:=List;
List:=ElNew;
End;
End;
{----------------}
Procedure OutPutList(List:PLink);
Var
i:integer;
Begin
WriteLn('element spiska ');
While List <> NIL Do
Begin
Write(List^.Data,' ');
List:=List^.Link;
End;
WriteLn;
End;
{----------------}
Procedure Insert(var q,l:PLink; x:TData);
Var
r:PLink;
Begin
New®;
R^.Data:=x;
R^.Link:=Q^.Link;
Q^.Link:=R;
l^.link:=R;
End;
{---------------------}
Var
List1,Elem,NewElem:PLink;
o, i,n,p:Integer;
ff:boolean;
{----------------}
Begin
InPutList(List1);
OutPutList(List1);
Write('wedite P=');
Readln(P);
Write('wedite O=');
Readln(O);
Elem:=List1;
NewElem:=List1;
i:=0;
{----------------------------------}
While Elem <> NIL Do
Begin
If Elem^.Data>p
Then
Begin
insert(Elem,NewElem,O);
OutPutList(NewElem);
i:=I+1;
Writeln('*****',i,'*****');
End;
Elem:=Elem^.Link;

End;
readkey
End.

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


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

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

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


Цитата(dream-x @ 5.05.2008 23:44) *
Вот код... я не могу понять почему он затирает последующие символы...
чесно говоря, я тоже не очень понимаю твою программу... но если заменить insert, на что-то подобное
procedure insert(var p_now:PLink; const data:TData);
var
p_new:PLink;
begin
new(p_new);
p_new^.data := data;
p_new^.link := p_now^.link;
p_now^.link := p_new;
end;
то, вроде, функциональность уже ближе к желаемой...
я так и не понял, почему ты туда хочешь передавать три параметра... и еще у тебя в программе есть не используемые переменные. и,если разговор зашел о переменных, я продолжаю рекомендовать объявлять глобальные переменные ПОСЛЕ процедур..

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


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


Пионер
**

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

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


Цитата(compiler @ 6.05.2008 15:56) *

чесно говоря, я тоже не очень понимаю твою программу... но если заменить insert, на что-то подобное
procedure insert(var p_now:PLink; const data:TData);
var
p_new:PLink;
begin
new(p_new);
p_new^.data := data;
p_new^.link := p_now^.link;
p_now^.link := p_new;
end;
то, вроде, функциональность уже ближе к желаемой...
я так и не понял, почему ты туда хочешь передавать три параметра... и еще у тебя в программе есть не используемые переменные. и,если разговор зашел о переменных, я продолжаю рекомендовать объявлять глобальные переменные ПОСЛЕ процедур..

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


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

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

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


Цитата(dream-x @ 6.05.2008 15:36) *
Спасибо!!!
всегда пожалуйста...
Цитата(dream-x @ 6.05.2008 15:36) *
Что-то я ступил...
посмотри еще примеры... и попытайсяя делать код "чище"...


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


Пионер
**

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

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


Цитата(compiler @ 6.05.2008 16:51) *

всегда пожалуйста...
посмотри еще примеры... и попытайсяя делать код "чище"...

Еще раз спасибо! Все учту...
З.Ы. А щас курсач доделывать буду...

Добавлено через 5 мин.
Если кому нужна эта задача то вот исходник


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


Прикрепленные файлы
Прикрепленный файл  SPISOK.PAS ( 1.8 килобайт ) Кол-во скачиваний: 168
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #31


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

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

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


прошу прощения за оффтоп..

Цитата(dream-x @ 6.05.2008 19:40) *
А щас курсач доделывать буду...
это был курсач? если не секрет, где такие "курсачи" дают и на каком курсе...
или курсач на другую тему?

онтоп
а лишние переменные ты так и не убрал...

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


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


Пионер
**

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

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


Цитата(compiler @ 6.05.2008 20:50) *

прошу прощения за оффтоп..

это был курсач? если не секрет, где такие "курсачи" дают и на каком курсе...
или курсач на другую тему?

онтоп
а лишние переменные ты так и не убрал...

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


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

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

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


Цитата(dream-x @ 6.05.2008 20:30) *
Нет курсач у меня Пятнашки у меня там проблема с записью в файл имя игрока и его рекорд...
А ссылки это так лаба была...
курс? учебное заведение?

и это переменные нашёл? у тебя их там три штуки...
и OutPutList ты до ума не довел... заведи там отдельную переменную(зато сократится одна глобальная), но не меняй входные данные...
и напоследок, освобождение памяти тоже делать надо...


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


Пионер
**

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

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


Цитата(compiler @ 6.05.2008 21:51) *

курс? учебное заведение?

и это переменные нашёл? у тебя их там три штуки...
и OutPutList ты до ума не довел... заведи там отдельную переменную(зато сократится одна глобальная), но не меняй входные данные...
и напоследок, освобождение памяти тоже делать надо...


1 курс, Рязанский Радиотехнический Государственный Университет спец, САПР ВС...
это я щас все сделаю... а про память это как ее освоюождать?

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


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

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

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


Цитата(dream-x @ 6.05.2008 22:01) *
Рязанский Радиотехнический Государственный Университет
интересно... а я тоже собираюсь в такой же поступать, только в Харьковский)

Цитата(dream-x @ 6.05.2008 22:01) *
это я щас все сделаю...
ну , тут, батенька, поиск.. даже в ЧаВо єто есть, если псевдокодом..
Код
процедура освобождения(var список)
var
  указатель_на старый_элемент
begin
  пока список не указывает на нил[не речка)] begin
    старому элементу присвоить текущие значение(список)
    список указывает на следующий элемент
    освободить старый элемент(dispose(p_old);)
  end;
end;


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


Гость






Цитата
Если кому нужна эта задача то вот исходник
Не могу понять программистов, которые делают непонятные (интуитивно) программы...

Если я ввожу данные в список так:
<1, 2, 3, 4, 5> - почему тут же получаю распечатку в виде:
<5, 4, 3, 2, 1> ? Что, настолько сложно сделать добавление в конец списка? Всего навсего:

Procedure InPutList(Var List:PLink);
Var
ElNew, Tail: PLink;
Value:TData;
i,n:Integer;
Begin
ClrScr;
WriteLn('vvedite kol-vo elementov spiska ');
ReadLn(n);

List := nil; Tail := nil;
For I:=1 To n Do
Begin
WriteLn('vvedite ',i,' element');
Read(value);
New(ElNew);
ElNew^.Data:=Value;
ElNew^.Link:=nil;

if List = nil then List := ElNew
else Tail^.Link := ElNew;

Tail := ElNew;
End;
End;
неужели настолько много изменилось?

Второе: по условию -
Цитата
Программа должна переставить элементы списка по следующему звкону: если текущий элемент больше некоторого числа Р то поместитьследующий заним элемент в конец цепочки; если текущий элемент меньше или равен Р перенести его в начало цепочки (первый оставить безизменения)
Все. Точка... Вводить надо только список и значение P. С какой стати программа требует ввода какого-то O? Хоть бы объясняла, зачем оно, а то, собственно, что вводить-то?

Добавлено через 11 мин.
P.S. Опять же... Основная программа:

...
insert(Elem,O);
OutPutList(NewElem); { <--- Это значение что, где-то инициализировалось? }
...

Нет... Зачем выводить пустоту?

А при вводе в O значения, которое превышает P (я не знаю, что туда надо было вводить, поэтому экспериментирую в режиме телепатии) программа вообще зацикливается...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #37


Пионер
**

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

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


Цитата(volvo @ 7.05.2008 17:40) *

А при вводе в O значения, которое превышает P (я не знаю, что туда надо было вводить, поэтому экспериментирую в режиме телепатии) программа вообще зацикливается...

Уважаемый volvo вот собственно задание: Составить программу вставки элемента O после каждого элемента списка, превышающее некоторое значение Р. Вот код... но есть проблема он стирает последующие символы...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #38


Гость






Цитата
но есть проблема он стирает последующие символы...
Я тебе написал, какие у тебя ЕЩЕ проблемы в коде... В условии не сказано, что вводимое значение O должно быть меньше, чем значение P, правда?

Вводим O = 8 и P = 3 при списке = <5, 4, 3, 2, 1> и получаем зацикливание... Если хочешь - расскажу, в чем причина зацикливания, но тебе будет полезнее пройтись по программе в режиме отладки и найти ошибку самостоятельно...

А все потому, что ты не хочешь делать так, как нужно (а как нужно - написано в FAQ-е, в теме про ДСД), а хочешь все время сделать по-своему, к тому же неправильно, и при этом еще утверждаешь, что программа у тебя рабочая (см. свой же пост №30)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #39


Пионер
**

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

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


Цитата(volvo @ 9.05.2008 18:11) *

Я тебе написал, какие у тебя ЕЩЕ проблемы в коде... В условии не сказано, что вводимое значение O должно быть меньше, чем значение P, правда?

Вводим O = 8 и P = 3 при списке = <5, 4, 3, 2, 1> и получаем зацикливание... Если хочешь - расскажу, в чем причина зацикливания, но тебе будет полезнее пройтись по программе в режиме отладки и найти ошибку самостоятельно...

А все потому, что ты не хочешь делать так, как нужно (а как нужно - написано в FAQ-е, в теме про ДСД), а хочешь все время сделать по-своему, к тому же неправильно, и при этом еще утверждаешь, что программа у тебя рабочая (см. свой же пост №30)

Я не заметил прошу прощение щас пройдусь и все посмотрю спасибо огромное!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #40


Пионер
**

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

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


Вот собственно что я придумал... Но все равно он удаляет предшествующие элементы после 2 повторения цикла

procedure insert(var p_now,p_list:PLink; const data:TData);
var
p_new:PLink;
begin
new(p_new);
p_new^.data := data;
p_new^.link := p_now^.link;
p_list := p_now;
p_now := p_new;

end;

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

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

 





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