Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2009, 09:01   #1
Alco
Новичок
Джуниор
 
Регистрация: 16.06.2009
Сообщений: 14
По умолчанию Удаление строк при рекурсии (Delphi)

Добрый день. Пишу программу, суть такова: недетерминированный автомат с магазинной памятью, есть функции переходов в зависимости от символа входной ленты и верхнего символа магазина (+используется е-такт).
Задается входная строка, нужно проверить, допускается ли она автоматом (при преобразовании надо чтобы опустошилась одновременно входная строка и магазин).
Написал рекурсивную функцию для проверки, вроде бы все работает, но! надо записать в StringGrid последовательность преобразований (если она существует), которая приводит к нужному результату.
В таблице получается много лишнего. Как сделать, чтобы при возвращении на предыдущий уровень рекурсии, если перебраны все варианты, запись в таблице удалялась?


Примерно так работа должна выглядеть


(S,1001)
l1--- (SBSASA, 001)
l2--- (SASBSBBSASA,01)
l3--- (SASBSBASBSBBSASA,1)
l4--- (SBSASAASBSBASBSBBSASA,e) <-> ошибка, удалили строку, вернулись вверх
--- ...
--- ...
--- ...
--- е-такт //нужно вернуться на l3 и чтобы удалилась запись (SASBSBASBSBBSASA,1)
l3--- (SBSASBASBSBBSASA,1)
l4--- ...
....
.... //вернуться на l2 и чтобы удалилась запись неверного хода (SASBSBBSASA,01)
...
l1--- (SASASB,001)
...
l2--- (ASASB,001)
...
l3--- (SASB,01)
...
l4--- (ASB,01)
...
l5--- (SB,1)
l6--- (B,1)
l7--- (e,e) //конец

В итоге в таблице должно быть следующее:
S | 1001
SASASB | 001
ASASB | 001
SASB | 01
ASB | 01
SB | 1
B | 1
e | e
Alco вне форума Ответить с цитированием
Старый 16.06.2009, 14:38   #2
Mikhail Bakurov
Форумчанин
 
Регистрация: 12.10.2008
Сообщений: 140
По умолчанию

поставь проще условие, чтобы не создавалась строка, или ячейку прировняй к '', или сделай RowCount-1
Mikhail Bakurov вне форума Ответить с цитированием
Старый 16.06.2009, 15:06   #3
Alco
Новичок
Джуниор
 
Регистрация: 16.06.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Mikhail Bakurov Посмотреть сообщение
поставь проще условие, чтобы не создавалась строка, или ячейку прировняй к '', или сделай RowCount-1
Да я сделал уже, трехчасовой дебаггинг меня спас.
Alco вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строк alexk Microsoft Office Excel 24 15.02.2011 08:34
пойск строк при помощи множеств Delphi Walter Помощь студентам 5 23.05.2009 19:38
Удаление строк Dr.Badnezz Общие вопросы Delphi 1 07.10.2008 15:22
удаление строк Dime_x Microsoft Office Excel 2 07.10.2008 13:38
Рекурсии при составлении программ Дуня Помощь студентам 3 06.12.2006 20:35