![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
*оля* |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
почему-то если хочешь записать повторно элемент, то не работает, хотя должен выводить сообщение, что такой элемент уже записан. И задача на наличие элемента, связанная с этой процедурой(MAKENULL), тоже не работает.
помогите пожалуйста найти ошибку. . |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
*оля*
Во-первых ,у меня к тебе вопрос: чем ЭТО компилируется? Просто чтоб знать... А во-вторых - в чем ошибка. Вот в этом: Цитата function MEMBER ( x: string; var A: TABL ): boolean; P.S. Не, первый вариант хуже, пользуйся вторым. Зачем бежать дальше по таблице, если уже известно, что X там присутствует... |
*оля* |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
ой, да, точно, последняя строчка всегда выполняется, спасибо большое!
хм, правда я исправила, теперь сама по себе она работает, но почему-то все равно сообщение не выдает, а просто выходит из программы. if not MEMBER (x, A ) then writeln (' элемент не существует'). можно так писать? и после выполнения процедуры просмотра тоже программа закрывается((( p.s: PascalABC.net Сообщение отредактировано: *оля* - 8.11.2010 22:19 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата p.s: PascalABC.net С этого надо было начинать...PascalABC.NET неправильно обрабатывает цикл while current <> nil do, в результате этот цикл становится вечным (можешь воспользоваться отладчиком и прогнать пошагово этот кусок программы). Причину пока не понял. Как разберусь - напишу. Добавлено через 5 мин. Блин... Что-то я торможу уже, спать надо больше, наверное. Он просто неправильно записан. Вот так нужно делать: while current <> nil do А все знаешь почему? ![]() ![]() |
*оля* |
![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
что-то из лекций писала, что-то так) видимо, что так писала, там и ошибки)
да, так работает все теперь!) почти все... спасибо огромное, Вы всегда помогаете!) с этого сайта узнаю больше, чем с занятий в университете, спасибо) |
*оля* |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
казалось, что процедура удаления работает, но оказалось, что нет.
удаляет, удаляет, но бывают случаи, когда после удаления хеш-таблица сбивается или программа завершает работу, в чем ошибка я не понимаю, вроде рассматриваем первый элемент отдельно, как надо, но что-то не так. не подскажете в чем же ошибка? единственное, что я заметила, что не хватает dispose, а ошибку не могу найти. заранее спасибо) |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Ну, смотри, у тебя (по сравнению с авторским алгоритмом) по-другому реализована процедура Delete. У Ахо она вот такая:
procedure Delete(x: string; var A: TABL);Вроде бы у тебя с F логика та же самая, но мало ли ![]() Во-вторых, у тебя будет вылет за границы массива в процедуре Print: Цитата for i:=0 to B do Добавлено через 1 мин. Цитата единственное, что я заметила, что не хватает dispose PascalABC.NET со сборщиком мусора, так что не особо критично. |
*оля* |
![]()
Сообщение
#8
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
Во-вторых, у тебя будет вылет за границы массива в процедуре Print: Почему до B, когда тип описан как TABL = array[0..B-1] of ^celltype; ? да, это исправила уже, только забыла отредактировать сообщение, но все равно спасибо. а насчет той ошибки, исправила, но все равно, работает, работает, а потом перестает. обычно перестает работать, если я ввожу элементы, чтобы в строчке было больше 2х, потом удаляю несколько, потом ввожу один снова, потом снова удаляю....и так еще раз 10...и все, не работает( Сообщение отредактировано: *оля* - 15.11.2010 17:28 |
TarasBer |
![]()
Сообщение
#9
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
А где в процедуре Delete вызов Dispose?
> if MEMBER ( x, A ) = true then Не надо так писать, ты травмируешь этим мою психику, пиши if MEMBER ( x, A ) then Добавлено через 1 мин. Или в ABC.NET отменили Dispose? Типа само уберётся. Тогда это хреновая среда для обучения. Добавлено через 12 мин. Переписал на D7 (исправив озвученные в этой теме ошибки), 10 раз добавил и удалил слово abacaba, всё работает. -------------------- |
*оля* |
![]()
Сообщение
#10
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
ну так работает, да.
но преподаватель ее всегда минут 10 мучает и в конце концов она перестает работать. |
TarasBer |
![]()
Сообщение
#11
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Наверное, из-за отсутствия Dispose память кончается, не знаю.
Я-то переписал удаление так:
(И вообще, надо не 10 минут руками программу мучать, если уж на то пошло, а автоматически тестировать.) Упс, русские буквы не так скопировались. Сообщение отредактировано: TarasBer - 15.11.2010 17:59 -------------------- |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Цитата обычно перестает работать, если я ввожу элементы, чтобы в строчке было больше 2х, потом удаляю несколько, потом ввожу один снова, потом снова удаляю....и так еще раз 10...и все, не работает( Лог программы (что и в каком порядке вводишь, чтобы воспроизвести ошибку) - в студию. |
*оля* |
![]()
Сообщение
#13
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата далее удаляю слова: ролл, рор, пп (т.е. те, что в одной строчке) и все, как и должно быть, все слова из этой строки один за одним удаляются без проблем, сбоев не наблюдаю. Может, ты чего-то там еще изменяла? Присоединила бы исходник полностью (в виде PAS-файла) |
Гость |
![]()
Сообщение
#15
|
Гость ![]() |
Напиши тело программы вот так:
Создай файл hash.txt, напиши в нём что-то такое: Код 0 abc 0 acb 0 bca 0 bac 0 aaa 0 abb 0 bab 2 bac 2 bac 2 bac 3 3 3 3 3 3 3 3 3 4 Найди, какое содержимое файла вызывает глюки и пришли его сюда. |
*оля* |
![]()
Сообщение
#16
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
все, как и должно быть, все слова из этой строки один за одним удаляются без проблем, сбоев не наблюдаю. Может, ты чего-то там еще изменяла? Присоединила бы исходник полностью (в виде PAS-файла) там почти то же самое, что в первом сообщении, только названия переменных другие) ![]() |
Гость |
![]()
Сообщение
#17
|
Гость ![]() |
Ну так что с автоматическим тестом?
Я вот написал, как это можно организовать. Кстати, я забыл, надо ещё вместо
написать
|
dron4ik |
![]()
Сообщение
#18
|
![]() Бывалый ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 318 Пол: Мужской Репутация: ![]() ![]() ![]() |
У мя есть нормальная хеш таблица...могу скинуть.
Добавлено через 1 мин. посмотри там их даже несколько.. Прикрепленные файлы ![]() |
*оля* |
![]()
Сообщение
#19
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
Кстати, я забыл, надо ещё вместо
написать
в прикрепленном файле это уже исправили) dron4ik, спасибо, правда без исходного текста мне эти программы не помогут. Хотелось бы найти ошибку)) Сообщение отредактировано: *оля* - 15.11.2010 22:02 |
dron4ik |
![]()
Сообщение
#20
|
![]() Бывалый ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 318 Пол: Мужской Репутация: ![]() ![]() ![]() |
там же есть все исходники в прикрепленном файле
![]() |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 4:54 |