![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Insomnia |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: ![]() ![]() ![]() |
идея задачи в том: что бы произвести со списком различные действия. Проблема в удалении элемента списка по имени. Пробовал различные условия и составление процедуры/ процедур, но что бы полноценно из любого места удалял эл-т не выходит. Как пр: "если ввожу 3 эл-та и удаляю последний - все хорошо. но если следом удаляю 2 то он впринцепи прогоняет и выводит ответ: но вмете с тем и вылетает." . Косяк, я предполагаю, в неккоректных условиях, т.е. выходит за пределы списка.
опишите подробней пожалуйста мои ошибки. P.S. остальные условия работают хорошо, но если заметите недочеты , укажите их, пожалуйста. Прикрепленные файлы ![]() |
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата если я хочу попросить "что лежит под 3 номером, и он вывести должен имя и телефон данного служащего" . А с какой, собственно, стати ты должен об этом спрашивать? Что такое "3 номер" вообще? Список - это не массив, в него ведь информация может добавляться произвольно, в любое место. То что сейчас было №3 через секунду может стать уже №4, а в третьем элементе может оказаться то, что раньше было во втором, или чего раньше вообще не было (я уж не говорю о сортировке, которая так перекроит тебе всю нумерацию, что ты потом будешь месяц разбираться, что где, если еще и поле "порядковый номер" сделаешь). Нельзя делать доступ к элементам списка по порядковому номеру. Только по ключу (уникальному ключевому полю). А ключ у тебя - это фамилия. Вот и делай поиск по фамилии. Никакого счетчика.Цитата указатель на элемент списка? Да. Я имел в виду вот это:function search(const L : PPerson; s : Tname) : PPerson; // Возвращается что? Указатель..., а теперь, вместо того, чтобы "растворять" поиск в программе и размазывать его по нескольким местам, просто... 1) delete_person: case n of 2) found_phone writeln('напишите имя нужного вам человека');Структура программы упростится. Хотя, ты делаешь ошибку многих. Я устал говорить об этом: не перемешивай интерфейс и логику программы. Функция delete_person - это функция, которая должна получить на вход список, где будет производиться поиск, и фамилию искомого клиента. И вернуть результат: True, если данные из списка удалены, и False - если произошло что-то внештатное (именно поэтому я обычно возвращаю Integer. Если 0 - то все нормально, другое значение сигнализирует о том, какая именно ошибка произошла). Все остальное, вся вот эта беседа с пользователем, здесь - явно лишнее. Она должна происходить в другом месте программы, перед вызовом delete_person пользователя надо попросить, чтоб он ввел фамилию для удаления, чтоб ввел номер действия (я бы это делал в модуле Interface_1, у него ж и название правильное, это ИМЕННО интерфейс с пользователем, вот тут: case n of ), а не там, где происходит собственно удаление. То же самое относится и к сортировке: какое отношение имеет writeln ('воздух сортировать что ли ?')к сортировке списка? bubble_sort получила несортированный список, после ее выполнения список стал упорядоченным. Всё! Никакой самодеятельности больше. Все остальное к логике не относится. Это - интерфейс пользователя. Хочется похохмить - верни из bubble_sort единицу при пустом списке и 2-ку при списке, состоящем из одного элемента, и сделай: case bubble_sort(L) ofтам же, в Interface_1. |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 20:59 |