Многосвязные списки, Помощь |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Многосвязные списки, Помощь |
D1ma |
13.04.2009 20:15
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 32 Пол: Мужской Реальное имя: Дима Репутация: 0 |
Всем привет.Требуется помощь в написании программы с использованием многосвязных список. Тему плохо понял, поэтому требуется помощь.
Задание: Найти короткую строку. Сам код программы есть, требуется лишь поспотроить МС -) VAR |
volvo |
13.04.2009 20:18
Сообщение
#2
|
Гость |
Что в твоем понимании МС? Двухсвязный список? Мульти-список? Насколько МНОГОсвязным должен быть список?
|
D1ma |
13.04.2009 20:45
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 32 Пол: Мужской Реальное имя: Дима Репутация: 0 |
|
volvo |
13.04.2009 20:50
Сообщение
#4
|
Гость |
Что ты хочешь делать с мультисписком? Читать в него весь файл что-ли?
(Кстати, я помню, когда-то выкладывал программу, строящую мультисписок, посмотри в поиске.) |
D1ma |
16.04.2009 14:29
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 32 Пол: Мужской Реальное имя: Дима Репутация: 0 |
Вот что получилось :
Код USES CRT; CONST PATH='C:\F1.TXT'; TYPE DATA=STRING; LINK=^RS; RS=RECORD VAL:DATA; LNK:LINK; END; TF=TEXT; VAR F:TF; A:LINK; B:WORD; PROCEDURE ADD(VAR A:LINK;B:DATA); BEGIN IF A<>NIL THEN ADD(A^.LNK,B) ELSE BEGIN NEW(A); A^.VAL:=B; A^.LNK:=NIL; END; END; PROCEDURE LOAD(VAR F:TF;VAR A:LINK); VAR I:DATA; BEGIN ASSIGN(F,PATH); RESET(F); A:=NIL; WHILE NOT EOF(F) DO BEGIN READLN(F,I); ADD(A,I); END; END; PROCEDURE OUTPUT(A:LINK); BEGIN WHILE A<>NIL DO BEGIN WRITELN(A^.VAL); A:=A^.LNK; END; END; PROCEDURE MIN(A:LINK;VAR B:WORD); VAR I:WORD; BEGIN B:=256; WHILE A<>NIL DO BEGIN IF LENGTH(A^.VAL)<B THEN B:=LENGTH(A^.VAL); A:=A^.LNK; END; IF B=256 THEN B:=0; END; BEGIN CLRSCR; LOAD(F,A); OUTPUT(A); MIN(A,B); WRITELN; WRITELN('MIN=',B); READLN; END. Токо вот нужно без использования STRING, подравьте чуток - |
D1ma |
27.05.2009 16:49
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 32 Пол: Мужской Реальное имя: Дима Репутация: 0 |
Помогите исправить процедуру MIN. Список сформирован, необходимо найти длину короткой строки, используя CHAR.
SES CRT; Сообщение отредактировано: Lapp - 1.06.2009 7:42 |
Krjuger |
27.05.2009 17:28
Сообщение
#7
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Понимаеш char это одна буква,по сути ты находиш длинну, считывая строку побуквенно,зачем это делать я хз,но суть того, что я написал, мы берем строку и до тех пор пока не конец накручиваем счетчик ch, потом берем следующую опять накручиваем и сравниваем,меньшее записывает. |
D1ma |
27.05.2009 19:35
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 32 Пол: Мужской Реальное имя: Дима Репутация: 0 |
Понимаеш char это одна буква,по сути ты находиш длинну, считывая строку побуквенно,зачем это делать я хз,но суть того, что я написал, мы берем строку и до тех пор пока не конец накручиваем счетчик ch, потом берем следующую опять накручиваем и сравниваем,меньшее записывает. то что char это 1 символ прекрасно понимаю Ну вот задали так... Но ведь Eoln это ведь только для файловой переменной. а тут список... Как быть? |
Krjuger |
27.05.2009 20:04
Сообщение
#9
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Ну у меня то eoln не для списка,а только для A^.Val,а это string часть,для нее должно работать.а вообще подожди щас проверю.
мда действительно нельзя,извиняюсь.Тогда сделай так.
так должно работать. Сообщение отредактировано: Krjuger - 27.05.2009 20:19 |
D1ma |
28.05.2009 19:17
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 32 Пол: Мужской Реальное имя: Дима Репутация: 0 |
Немного не понял, а почему именно 'enter'?
|
Krjuger |
28.05.2009 20:35
Сообщение
#11
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Ну а что ты нажимаеш,когда хочеш перейти на новую строку?Я вроде нажимаю enter.Поэтому логично,что если элемент char равен enter,то ты автоматически попадаеш на новую строку.
|
D1ma |
31.05.2009 16:03
Сообщение
#12
|
Новичок Группа: Пользователи Сообщений: 32 Пол: Мужской Реальное имя: Дима Репутация: 0 |
эх, что-то не работает...
пробывал по всякому, но что-то не получается ( Кто сможет сделать за небольшое вознаграждение? |
Krjuger |
31.05.2009 16:06
Сообщение
#13
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
За вознаграждение,это уже немного в другую тему.
|
Lapp |
1.06.2009 8:10
Сообщение
#14
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Krjuger, я понимаю, что
Цитата Не ругайте сильно,я только учусь. - но почему ты заставляешь других учиться на твоих ошибках? Еще раз: проверяй свои творения перед публикацией! И учи матчасть.. D1ma, мне как-то странно, что у тебя данные имеют тип char, а не string (как в начале). Можешь пояснить? Ты понимаешь, что LENGTH(A^.VAL) всегда будет давать 1 в этом случае? Ты не паникуй, сделаем. Только ты говори яснее, что ты хочешь получить и как. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Krjuger |
1.06.2009 13:18
Сообщение
#15
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Действительно,зачем ты тип данных в списке сменил???ведь у тебя теперь в дате всего 1 элемент,мой кусочек тоже рабоать так не станет..Кстати скинь заново весь код с исправления внесенными тобой...а то
"пробывал по всякому, но что-то не получается (" очень мало о чем гворит,ты же не сказал,что изменил Сообщение отредактировано: Krjuger - 1.06.2009 13:23 |
D1ma |
1.06.2009 14:19
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 32 Пол: Мужской Реальное имя: Дима Репутация: 0 |
Krjuger, я понимаю, что - но почему ты заставляешь других учиться на твоих ошибках? Еще раз: проверяй свои творения перед публикацией! И учи матчасть.. D1ma, мне как-то странно, что у тебя данные имеют тип char, а не string (как в начале). Можешь пояснить? Ты понимаешь, что LENGTH(A^.VAL) всегда будет давать 1 в этом случае? Ты не паникуй, сделаем. Только ты говори яснее, что ты хочешь получить и как. Первый вариант рабочий, но как оказалось нельзя использовать STRING, а только CHAR.( до сих пор не пойму почему) Далее string поменял на char,чуток подправил,посимвольный ввод работает. Но вот как изменить процедуру min, я так и не додумался... p.s. Вариант, предложенный Krjuger не работает. read(A^.Val,cch); это допустимо только же для файлов? а тут список. |
Lapp |
1.06.2009 14:30
Сообщение
#17
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
read(A^.Val,cch); это допустимо только же для файлов? а тут список. Да, конечно. То есть, ты имеешь в виду, что в каждом элементе списка только один символ? Будь добр, подтверди (а лучше опровергни)), ибо мне все равно не верится в такое диво. Может, переспросишь препа? или кого-нить еще.. В принципе, ничего особо трудного, ибо концы строк ты тоже заносишь в список.. но странно)). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
D1ma |
1.06.2009 16:04
Сообщение
#18
|
Новичок Группа: Пользователи Сообщений: 32 Пол: Мужской Реальное имя: Дима Репутация: 0 |
Да, конечно. То есть, ты имеешь в виду, что в каждом элементе списка только один символ? Будь добр, подтверди (а лучше опровергни)), ибо мне все равно не верится в такое диво. Может, переспросишь препа? или кого-нить еще.. В принципе, ничего особо трудного, ибо концы строк ты тоже заносишь в список.. но странно)). Ну получается что только один символ, т.к. char, получается что подтверждаю ) |
Krjuger |
1.06.2009 17:13
Сообщение
#19
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
В общем я сделал для типа строка,но сразу говорю сделано довольнотаки кустарно,но работает,если надо то могу скинуть,но там я создаю буферный файл в который каждый раз перезаписываю строку,чтоб через чар посчитать его длинну...
|
Lapp |
1.06.2009 18:29
Сообщение
#20
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Ну получается что только один символ, т.к. char, получается что подтверждаю ) Сдается мне, что ты и не пытался уточнить.. Ладно, твое дело, в конце концов.Лови. PROCEDURE MIN(A:LINK;VAR B:WORD); -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 28.04.2024 9:51 |