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

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

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

> Задача на списки
dream-x
сообщение 4.05.2008 17:34
Сообщение #1


Пионер
**

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

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


Здравствуйте! Я был бы очень рад если бы вы мне помогли бы с маленькой пробдемой...
Программа должна переставить элементы списка по следующему звкону: если текущий элемент больше некоторого числа Р то поместитьследующий заним элемент в конец цепочки; если текущий элемент меньше или равен Р перенести его в начало цепочки (первый оставить безизменения)
Вот код но это не вся программа почемуто у меня список не хочет присваиваться и выводится на экран...

Program Spisok;
Uses CRT;
Type
TDat=integer;
TLink=^Element;
Element=Record
Data:TDat;
Link:TLink;
End;
Var
List1,Elem,FindElem:TLink;
i,n,p:TDat;
{----------------}
Procedure InPutList(Var List:TLink);
Var
ElNew:TLink;
Val:TDat;
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(val);
New(ElNew);
ElNew^.Data:=Val;
ElNew^.Link:=List;
List:=ElNew;
End;
End;
{----------------}
Procedure OutPutList(Var List:TLink);
Var
i:TDat;
Begin
WriteLn('element spiska ');
While List <> NIL Do
Begin
Write(List^.Data,' ');
List:=List^.Link;
End;
WriteLn;
End;
{----------------}
{----------------}
Begin
InPutList(List1);
List1:=List1;
OutPutList(List1);

OutPutList(List1);
Elem:=List1;



Write('wedite P=');
Readln(P);


FindElem:=NIL;
While List1 <> NIL Do
Begin

If Elem^.Data>P
Then
Begin
FindElem:=Elem;
New(FindElem);
{Elem^.Link:=NIL;}
Elem^.Link:=FindElem;
FindElem^.Link:=NIL;

End
Else Elem:=Elem^.Link;

End;

OutPutList(Elem);


End.


Заранее СПАСИБО...

Сообщение отредактировано: dream-x - 4.05.2008 18:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
compiler
сообщение 4.05.2008 18:05
Сообщение #2


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

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

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


ух, ну ты и намудрил... возьми модуль для работы с деками из ЧаВО и считай программа готова...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
dream-x
сообщение 4.05.2008 18:09
Сообщение #3


Пионер
**

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

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


Цитата(compiler @ 4.05.2008 19:05) *

ух, ну ты и намудрил... возьми модуль для работы с деками из ЧаВО и считай программа готова...

Не не катит...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 4.05.2008 18:20
Сообщение #4


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

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

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


Цитата(dream-x @ 4.05.2008 18:09) *
Не не катит...
ну если хочешь заняться, как говорит сегодняшний именинник, изобретением велосипеда, тогда избавься от изменения глобальных переменных в процедурах, гляди и программа читабельной станет...

зы но еще раз подумай о деках, программа будет в десять строк и иметь четкую структуру...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
dream-x
сообщение 4.05.2008 18:57
Сообщение #5


Пионер
**

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

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


Цитата(compiler @ 4.05.2008 19:20) *

ну если хочешь заняться, как говорит сегодняшний именинник, изобретением велосипеда, тогда избавься от изменения глобальных переменных в процедурах, гляди и программа читабельной станет...

зы но еще раз подумай о деках, программа будет в десять строк и иметь четкую структуру...


Вот я не могу понять (я вроде исправил переменные) почему не выводит 2 раза список:

Begin
InPutList(List1);
OutPutList(List1);
OutPutList(List1);

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 4.05.2008 19:02
Сообщение #6


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

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

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


Цитата(dream-x @ 4.05.2008 18:57) *
я вроде исправил переменные
исправленный код в студию...


для проверки, точно ли ты исправил), можешь перенести раздел объявления глобальных переменных ПОСЛЕ процедур...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
dream-x
сообщение 4.05.2008 19:05
Сообщение #7


Пионер
**

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

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


Цитата(compiler @ 4.05.2008 20:02) *

исправленный код в студию...
для проверки, точно ли ты исправил), можешь перенести раздел объявления глобальных переменных ПОСЛЕ процедур...

Он вверху
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 4.05.2008 19:08
Сообщение #8


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

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

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


Цитата(dream-x @ 4.05.2008 19:05) *
Он вверху
щаз посмотрим твой всевышний код)

и сразу вопрос строка List1:=List1; имеет скрытый смысл?

а теперь непосредственно по теме:
можешь описать что делает OutPutList? для подсказки, можешь заменить ее описание на Procedure OutPutList(const List:TLink); ... в общем она не только выводит данные...
upd забыл изменит var на const(

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
dream-x
сообщение 4.05.2008 19:12
Сообщение #9


Пионер
**

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

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


Цитата(compiler @ 4.05.2008 20:08) *

щаз посмотрим твой всевышний код)

и сразу вопрос строка List1:=List1; имеет скрытый смысл?


Это от безысходности mega_chok.gif

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

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(Var List:PLink);
Var
i:integer;
Begin
WriteLn('element spiska ');
While List <> NIL Do
Begin
Write(List^.Data,' ');
List:=List^.Link;
End;
WriteLn;
End;
{----------------}
Var
List1,Elem,FindElem:PLink;
i,n,p:Integer;
{----------------}
Begin
InPutList(List1);

OutPutList(List1);

OutPutList(List1);
Elem:=List1;



Write('wedite P=');
Readln(P);


FindElem:=NIL;
While List1 <> NIL Do
Begin

If Elem^.Data>P
Then
Begin
FindElem:=Elem;
New(FindElem);
{Elem^.Link:=NIL;}
Elem^.Link:=FindElem;
FindElem^.Link:=NIL;

End
Else Elem:=Elem^.Link;

End;

OutPutList(Elem);


End.


Переделанный... Как ты просил...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 4.05.2008 19:20
Сообщение #10


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

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

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


я обновил предыдущий пост...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
dream-x
сообщение 4.05.2008 19:23
Сообщение #11


Пионер
**

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

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


Цитата(compiler @ 4.05.2008 20:20) *

я обновил предыдущий пост...

Ну что я зделал неправильно, я понять не могу тут все Должно павыводиться!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 4.05.2008 19:30
Сообщение #12


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

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

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


Цитата(dream-x @ 4.05.2008 19:23) *
Ну что я зделал неправильно, я понять не могу тут все Должно павыводиться!
процедуры вывода не должны менять значения чего либо...
скажем есть урывок
var i:integer;
begin
i:=0;
writeln(i);
{i = ?}
end.
ты хотел бы что бы i менялась? наверное, нет... а у тебя в процедуре List меняется на nil. . и в следующий раз ничего не выводится... добавь в процедуру дополнительную переменную и меняй ее, а List не трож!

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


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


Пионер
**

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

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


Цитата(compiler @ 4.05.2008 20:30) *

процедуры вывода не должны менять значения чего либо...
скажем есть урывок
var i:integer;
begin
i:=0;
writeln(i);
{i = ?}
end.
ты хотел бы что бы i менялась? наверное, нет... а у тебя в процедуре List меняется на nil. . и в следующий раз ничего не выводится... добавь в процедуру дополнительную переменную и меняй ее, а List не трож!


Где именно


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;

Если сдесь сдесь должно так быть и я щас попробывал одно и тоже...

Добавлено через 2 мин.
Это же ввод списка а перед вводом его обнулить надо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
dream-x   Задача на списки   4.05.2008 17:34
compiler   ух, ну ты и намудрил... возьми модуль для работы с...   4.05.2008 18:05
dream-x   ух, ну ты и намудрил... возьми модуль для работы ...   4.05.2008 18:09
compiler   Не не катит...ну если хочешь заняться, как говорит...   4.05.2008 18:20
dream-x   ну если хочешь заняться, как говорит сегодняшний ...   4.05.2008 18:57
compiler   я вроде исправил переменныеисправленный код в студ...   4.05.2008 19:02
dream-x   исправленный код в студию... для проверки, точно ...   4.05.2008 19:05
compiler   Он вверхущаз посмотрим твой всевышний код) и сраз...   4.05.2008 19:08
dream-x   щаз посмотрим твой всевышний код) и сразу вопрос...   4.05.2008 19:12
compiler   я обновил предыдущий пост...   4.05.2008 19:20
dream-x   я обновил предыдущий пост... Ну что я зделал неп...   4.05.2008 19:23
compiler   Ну что я зделал неправильно, я понять не могу тут ...   4.05.2008 19:30
dream-x   процедуры вывода не должны менять значения чего л...   4.05.2008 19:34
compiler   причем здесь InPutList? мы ж вроде говорили о друг...   4.05.2008 19:39
dream-x   причем здесь InPutList? мы ж вроде говорили о дру...   4.05.2008 19:42
compiler   ммм... а если тут убрать это тогда цикл зациклится...   4.05.2008 19:45
volvo   А если убрать Var вот тут: , ничего не зациклится?...   4.05.2008 19:45
dream-x   А если убрать Var вот тут: , ничего не зациклится...   4.05.2008 19:49
volvo   А теперь - по шагам, для тех кто не понимает Паска...   4.05.2008 19:54
dream-x   Вот так вот: 1. исходный список: <5, 6, 7, 8, 9...   4.05.2008 20:17
dream-x   Уважаемый volvo! Поздравляю с днем Рождения...   4.05.2008 19:55
dream-x   Вот еще вопрос появился :), я список перегнал в од...   4.05.2008 22:17
compiler   Вот еще вопрос появился :), я список перегнал в од...   5.05.2008 14:06
dream-x   не захотел делать с деками - ладно, но зачем сува...   5.05.2008 18:24
compiler   Массивами это я как вариант...смотрим примеры рабо...   5.05.2008 18:52
dream-x   Задание слегка изменилось но суть таже... Составит...   5.05.2008 23:44
compiler   Вот код... я не могу понять почему он затирает по...   6.05.2008 14:56
dream-x   чесно говоря, я тоже не очень понимаю твою програ...   6.05.2008 15:36
compiler   Спасибо!!!всегда пожалуйста... Что-то ...   6.05.2008 15:51
dream-x   всегда пожалуйста... посмотри еще примеры... и по...   6.05.2008 19:40
compiler   прошу прощения за оффтоп.. А щас курсач доделыва...   6.05.2008 19:50
dream-x   прошу прощения за оффтоп.. это был курсач? если ...   6.05.2008 20:30
compiler   Нет курсач у меня Пятнашки у меня там проблема с з...   6.05.2008 20:51
dream-x   курс? учебное заведение? и это переменные нашёл?...   6.05.2008 22:01
compiler   Рязанский Радиотехнический Государственный Универс...   7.05.2008 16:04
volvo   Не могу понять программистов, которые делают непон...   7.05.2008 16:40
dream-x   А при вводе в O значения, которое превышает P (я ...   7.05.2008 17:59
volvo   Я тебе написал, какие у тебя ЕЩЕ проблемы в коде.....   9.05.2008 17:11
dream-x   Я тебе написал, какие у тебя ЕЩЕ проблемы в коде....   9.05.2008 17:20
dream-x   Вот собственно что я придумал... Но все равно он у...   9.05.2008 17:45
volvo   Почти... Надо вот так: procedure insert(var p_now...   9.05.2008 17:59
dream-x   Почти... Надо вот так: [code=pas]procedure inser...   9.05.2008 18:04
volvo   Я там поправил, у Insert всего 2 параметра, я прос...   9.05.2008 18:22
dream-x   Я там поправил, у Insert всего 2 параметра, я про...   9.05.2008 18:32
volvo   Проверяй внимательно, у меня только что все отрабо...   9.05.2008 19:28
dream-x   Проверяй внимательно, у меня только что все отраб...   9.05.2008 19:39


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

 



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