Линейный список, Создать с помщью Randomize |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Линейный список, Создать с помщью Randomize |
Madam |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Женский Реальное имя: Наталья Репутация: 1 |
Здравствуйте!
Помогите пожалуйста далеко не юной зочнице справится с кусовиком. Как с помощью Randomize создать линейный список из десяти положительных целых чисел? Заранее благодарю. Сообщение отредактировано: Madam - |
Lapp |
Сообщение
#2
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Наташа,
пожалуйста, создавай для новой задачи новую тему - ладно? А фото лучше поместить в профиле Что касается списков и Randomize - на Форуме уже много раз было. Попробуй воспользоваться Поиском. Задай, например, поиск +линейн* +спис* Если не найдешь, что нужно, или будет непонятно - спрашивай еще. Удачи! -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Madam |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Женский Реальное имя: Наталья Репутация: 1 |
Здравствуйте уважаеммый Андрей! Спасибо за ответ. Прошу прощения за ошибки - это моя первая попытка общения на форумах. Я привыкла все делать сама. но изучать программирование самостоятельно довольно трудно, тем более такую устаревшую китайскую граммоту, как Паскаль. Кого не спросишь - кто не помнит, а кто и не знает. Хотя у нас в организации программистов больше чем людей. Все пишут на C++ и Java, а Паскаль он и презирают. Досконально перечитала то что выложил Altair о динамических структурах и то что выдал поиск, но конкретно о создании списка Random'ом не нашла. Не соображу как это сделать в цикле и что будет счетчиком цикла? Кстати, в прикрепленной прграмме Lict.pas у Altair'а не работают процедуры addafter и addbefore, ощущение что ошибка в функции searchel, прошу прощения если ошибаюсь. Помогите пожалуйста. Заранее благодарна за любую помощь. |
volvo |
Сообщение
#4
|
Гость |
Вот простейшая процедура создания списка (все, что потребуется - поменять число элементов, и заменить ввод с клавиатуры на Random):
Сложение элементов 2 списков |
Lapp |
Сообщение
#5
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Прошу прощения за ошибки Да какие там ошибки - не нужно никаких извинений Единственная просьба - быть немного попроще, если можно.. Слово "Уважаемый" оставь для служебных записок - тут его могут истолковать противоположным образом.. volvo дал хороший пример. Что касается Randomize, то я подозреваю, что ты имеешь в виду Random (как и пишет volvo). Делается это примерно так.. Вместо строчки write('item #', i:2, ' = '); readln(X); вставь, например, вот, что: X:=Random(1000); Этот оператор присваивает переменной Х случайное значение в диапазоне 0 - 999 (можешь менять параметр функции Random, чтоб получить желаемый диапазон, но не задавай его больше, чем 65536). Если ты сделаешь так, числа будут не совсем случайными, они будут одинаковыми при каждом новом запуске программы (хотя друг от друга зависеть как бы не будут). На самом деле это очень удобно на стадии отладки программы. Но если ты хочешь все же получить действительно случайные числа (другие при каждом новом запуске программы), то просто вставь тот самый Randomize до первого вызова Random (например, самым первым оператором программы, то есть сразу после первого begin в теле программы - в данном случае перед вызовом create_list). Убедись, что тебе понятен смысл каждого значка - иначе в программировании нельзя. Приходи снова с вопросами. Удачи! -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Madam |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Женский Реальное имя: Наталья Репутация: 1 |
Андрей, спасибо большое, все получилось. Теперь буду полученный список сортировать и т. д. в графическом режиме.
|
Lapp |
Сообщение
#7
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Теперь буду полученный список сортировать и т. д. в графическом режиме. Отлично. Если что - говори. И даже если все вроде получается - все равно приноси и показывай код. Смеяться над новичками тут не принято, а показать как лучше - это завсегда. Удач! -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Madam |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Женский Реальное имя: Наталья Репутация: 1 |
Отлично. Если что - говори. И даже если все вроде получается - все равно приноси и показывай код. Смеяться над новичками тут не принято, а показать как лучше - это завсегда. Всем привет!Удач! У меня опять вопрос: ошибка в процедуре выбора элемента. Не могу понять, что не так? Почему программа не проходит весь список, а вставляет элемент после первого? program CreaChlist; |
volvo |
Сообщение
#9
|
Гость |
Цитата Почему программа не проходит весь список, а вставляет элемент после первого? Потому, что ты сказала ей делать это:
Insert(p1); Что, собственно, нужно сделать? Вставить новый элемент после найденного? А если не было найдено ничего? |
Madam |
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Женский Реальное имя: Наталья Репутация: 1 |
Цитата(volvo @ 5.10.2006 14:10) Что, собственно, нужно сделать? Вставить новый элемент после найденного? А если не было найдено ничего? Нужно было вставить новый элемент после заданного, заданный считывается но вставляется почемуто после первого. Я не могу сообразить, зациклилась. Подскажите, как, пожалуйста! |
volvo |
Сообщение
#11
|
Гость |
P.S. Кстати, программа вообще аварийно заканчивается (при использовании FPC любые огрехи видны очень четко: чуть что - Segmentation Fault, что в большинстве случаем замалчивается Turbo Pascal-ем, потом выдающим некорректный результат)...
Причина: наличие в программе ГЛОБАЛЬНОЙ переменной First, которая просто НЕ инициализирована... ЛОКАЛЬНАЯ переменная, описанная в Create_List ее перекрывает... Это - ошибка... |
Madam |
Сообщение
#12
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Женский Реальное имя: Наталья Репутация: 1 |
Причина: наличие в программе ГЛОБАЛЬНОЙ переменной First, которая просто НЕ инициализирована... ЛОКАЛЬНАЯ переменная, описанная в Create_List ее перекрывает... Это - ошибка... Сделала first локальной - результат тот же Program Seachlst; Может дело в последней строчке? |
Atos |
Сообщение
#13
|
Прогрессор Группа: Пользователи Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: 9 |
Я сейчас пытаюсь разобраться в программе... похоже, ты не осознаёшь разницы между глобальными и локальными переменными... тебе надо разобраться с областями видимости. В частности, в твоей процедуре, которая должна производить поиск, зачем-то создаёшь новый, незаполненный список, и начинаешь пытаться в нём искать.
Цитата Сделала first локальной имхо, надо наоборот - убрать локальную first. и не только её... сейчас разберусь, скажу точнее...И вот это еще: Цитата Insert(p1); Тогда уж, наверное, логичнее будет Insert(q); Сообщение отредактировано: Atos - |
Madam |
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Женский Реальное имя: Наталья Репутация: 1 |
Я сейчас пытаюсь разобраться в программе... похоже, ты не осознаёшь разницы между глобальными и локальными переменными... тебе надо разобраться с областями видимости. В частности, в твоей процедуре, которая должна производить поиск, зачем-то создаёшь новый, незаполненный список, и начинаешь пытаться в нём искать. имхо, надо наоборот - убрать локальную first. и не только её... сейчас разберусь, скажу точнее... Совершенно верно, с глобальными и локальными у меня вечная путаница. |
volvo |
Сообщение
#15
|
Гость |
Цитата Сделала first локальной И что? First, которая БЫЛА в Create_List (да, да, именно была, при выходе из Create_List стек разрушился, и этой переменной больше нет) никак не связана с First, которая существует в Cearch_element (эта переменная вообще содержит случайное значение, т.е. "мусор")...Выходов два: 1. ЛИБО работать с глобальной переменной (так проще, но я не люблю глобальные переменные, поэтому ...) 2. ЛИБО работать не с процедурами, а с функциями возвращающими результат своей работы в вызывающую часть программы... |
Madam |
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Женский Реальное имя: Наталья Репутация: 1 |
И что? First, которая БЫЛА в Create_List (да, да, именно была, при выходе из Create_List стек разрушился, и этой переменной больше нет) никак не связана с First, которая существует в Cearch_element (эта переменная вообще содержит случайное значение, т.е. "мусор")... Выходов два: 1. ЛИБО работать с глобальной переменной (так проще, но я не люблю глобальные переменные, поэтому ...) 2. ЛИБО работать не с процедурами, а с функциями возвращающими результат своей работы в вызывающую часть программы... Самое смешное, что я ее совсем убрала из Seach_el, а программа работает как и прежде! |
Atos |
Сообщение
#17
|
Прогрессор Группа: Пользователи Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: 9 |
В общем, если уж работать с глобальным списком, тогда надо внести следующие исправления:
first и last сделать глобальными и убрать их объявления из всех подпрограмм; p1 убрать нафик, в данном контексте программы эта переменная вообще не нужна, только запутывает. И всё-таки заменить Insert(p1); на Insert(q); |
Madam |
Сообщение
#18
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Женский Реальное имя: Наталья Репутация: 1 |
Я сейчас пытаюсь разобраться в программе... похоже, ты не осознаёшь разницы между глобальными и локальными переменными... тебе надо разобраться с областями видимости. В частности, в твоей процедуре, которая должна производить поиск, зачем-то создаёшь новый, незаполненный список, и начинаешь пытаться в нём искать. имхо, надо наоборот - убрать локальную first. и не только её... сейчас разберусь, скажу точнее... И вот это еще: Тогда уж, наверное, логичнее будет Insert(q); Ничего подобного! Так она вообще ничего не ищет и не вставляет. |
volvo |
Сообщение
#19
|
Гость |
Смотри, насколько все проще при использовании функций:
function Cearch_element(const first: pt): pt; Все остальное - без изменений... |
Atos |
Сообщение
#20
|
Прогрессор Группа: Пользователи Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: 9 |
Цитата Ничего подобного! Так она вообще ничего не ищет и не вставляет. Значит, где-то ещё ошибка. Смотри, перед этим ты вызвала Cearch_element(q); Значит, q должно указывать на нужный тебе элемент, так? И значит вставлять тебе нужно именно после q, а не после непонятного указателя p1, который вообще-то у тебя всегда указывает на начало списка, как и first |
Текстовая версия | 21.12.2024 20:59 |