![]() |
|
Модераторы: Poseidon |
![]()
|
|
| SniyLSD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 28.5.2008 Репутация: нет Всего: нет |
Всем привет! У меня есть небольшая просьба о помощи по теме динамические структуры данных,
Есть задача : Элементы двунаправленного списка имеют следующую структуру: - Шифр детали - Наименование - Цена - Вес - Указатель предыдущего - Указатель последующего Удалить элемент с заданным номером от конца списка. Проблема вот в чем, я написал программу, Работает, но частично, она может добавлять данные в дин.список, может выводить их в таблицу, но не работает удаление нужного элемента списка, мало того, программа просто виснет во время нажатия на кнопку удаления эл. пожалуйста, помогите, посмотрите скрипт расскажите в чем проблема, и, если не трудно, поправьте скрипт чтоб он работал, плиз Скрипт прилагается(Делфи 7): Присоединённый файл ( Кол-во скачиваний: 8 )
_______11_4.rar 196,71 Kb |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
Тебе надо все последующие номера сместить на 1 влево: на место 2-го пойдет 3, на место 3-го пойдет 4 и т. д. А потом у смещенных уменьшить номера на единицу.
А в коде, не разбираясь с записями, видна сразу явная ошибка:
Это сообщение отредактировал(а) anwe - 28.5.2008, 22:46 |
|||
|
||||
| SniyLSD |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 28.5.2008 Репутация: нет Всего: нет |
Понятно вроде, но слишком замудрился я с ней
Так, вроде чуть поправил:
Теперь не виснет, но выдает ошибку типа "Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 0045F58E in module 'Project1.exe'. Read of address 00000054'. Process stopped. Use step or Run to continue." Ошибку обращения к памяти. [quote]Тебе надо все последующие номера сместить на 1 влево: на место 2-го пойдет 3, на место 3-го пойдет 4 и т. д. А потом у смещенных уменьшить номера на единицу.[quote] эммм... не понял, эти номера на счет чего? если честно, я этот код списал из программы аналогичной задачи, но там было другое условие - Удалить повторяющиеся элементы списка, если в них совпадает шифр и наименование. Сам в нем плохо разобрался. Можете мне помочь написать этот кусок кода правильно? Чтоб работал)) |
||||
|
|||||
| SniyLSD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 28.5.2008 Репутация: нет Всего: нет |
Понятно вроде, но слишком замудрился я с ней :crazy - тему "Дин. списки " я плохо понял :dash1
Так, вроде чуть поп |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
Это одно а незнание элементарных операторв - это другое. Почитай про while..do. Для выхода условие должно менятся внутри цикла. То что добавлено, ничего не дает. Для этого оператора при его работе с циклом из нескольких строк нужны операторные скобки. Да и добавил строку p:=p^.next, независящую от i. А проскакивает у тебя этот цикл, вероятно, потому что делаешь это в первый же раз. Другими словами и p и head=nil
Это индексы элементов в массиве. Это сообщение отредактировал(а) anwe - 29.5.2008, 13:39 |
|||
|
||||
| SniyLSD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 28.5.2008 Репутация: нет Всего: нет |
Походу я намудрил с алгоритмом подсчитывания номера удаляемого элемента от головы. это все и усложнило процедуру удаления, а может этот способ даже неприемлен для данной ситуации, что вызывает различного рода ошибки.
Можете мне помочь написать код который выбирает элемент с заданным номером от конца списка? то есть в списке 10 элементов, выбрали второй элемент от конца, а от головы он будет 9. а дальше мне будет понятнее, так как траблы у меня именно с этим((
Вот вроде с этим понятнее , можно ли как нибудь по другому реализовать выбор нужного нам элемента списка? |
|||
|
||||
| anwe |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
Отвечая на первый вопрос
привожу работоспособный код:
Добавлена кнопка Button3 (чтобы твой код не трогать)
Ниже сам проект. Присоединённый файл ( Кол-во скачиваний: 27 )
_______11_4.rar 199,94 Kb |
||||||
|
|||||||
| SniyLSD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 28.5.2008 Репутация: нет Всего: нет |
Ого! Спасибо дружище! Блин, не додумался до такого простого варианта (, видно сказывается небольшой опыт практического программирования, да и с сессией замотался - мозги кипят
Еще раз спасибо) |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |