![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]()
Доброго времени суток.
Я знаю, что эта тема - дикий баян, но я взялся за свой генератор, у меня есть готовый код, и я пришёл сюда за помощью. Мой генератор полностью должен генерировать "выигранное" поле судоку, дальше, я думаю, понятно. Моя проблема заключается в том, что этот генератор зависает, вот я и пришёл за помощью. Ниже будет приведён код, помогите пожалуйста его поправить ... Описаний много, но они разжёваны, пожалуйста, не игнорируйте. Сразу скажу, простите за использование метки и операторов GOTO, но в моём случае это упростит код от пяти-вложенных циклов. Код:
---Это должен быть спойлер--- 1) В данном случае определять, в каком квадрате 3x3 общей матрицы происходит проверка чисел, ввод и подобные операции (если не понятно - одно из правил судоку, не должно быть повтора в квадрате 3x3, этот квадрат я и определяю); 2) Просто обозначают, в какой ячейке происходит операция ввода (это нужно потому что мой интерфейс построен на canvas'е компонента TImage, а тут уже долго объяснять) ---Тут спойлер должен был закончиться--- Функция "square_search(rand)", возвращающая результат типа boolean, должна выполнять поиск (полученного случайного) числа в квадрате, в котором должна произойти запись. Код этой функции выглядит так: Код:
Собственно, объяснения на этом закончились. Теперь вопрос: помогите пожалуйста разобраться, в чём проблема ? Когда пол часа сидел в отладке - этот генератор записал мне в строку два одинаковых числа. Я ничего не понял и лёг спать.
Подпись ? Не, не слышал ...
|
![]() |
![]() |
![]() |
#2 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Код:
или дать другие имена для i, g (row | col к примеру) if (check) then goto new else; // переход по "маяку" Цитата:
Код:
Цитата:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 12.10.2013 в 18:55. |
||
![]() |
![]() |
![]() |
#3 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]()
evg_m, оператор continue увеличивает такт цикла (счётчик) на единицу. Мне же нужна привязка к i и g, которые я перезаписывать не могу, только если перекодить в цикл while, тем самым усложняя обработку счётчика => больше кода.
По поводу медитации - спасибо, уже увидел. Глобальные переменные используются в трёх процедурах и двух обработчиках синхронно - изменяя данные в одном обработчике они последовательно используются в другом, а именно: при нажатии на TImage переводится из пикселей (где было нажатие клавиши мыши) в столбец и строку в матрице, а после ввода цифры эти два числа используются для обращения в матрицу и, соответственно, запись введённой цифры.
Подпись ? Не, не слышал ...
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Я бы создал числовой ряд из 9 чисел, 0 использовал бы в качестве пустого места. Таких радов так же 9. Затем сформировал бы матрицу 9x9, визуально разделив на отдельные 3x3 квадраты. И не надо никаких циклов.
|
![]() |
![]() |
![]() |
#5 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]()
Человек_Борща, не уловил сути вашего сообщения ... Можете пожалуйста объяснить подробнее ?
Подпись ? Не, не слышал ...
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Судоку | FILA | Общие вопросы Delphi | 2 | 20.09.2013 22:48 |
Судоку на C++ | Logg | Помощь студентам | 0 | 20.01.2013 15:39 |
Переделать обычное судоку в судоку чёт-нечёт | Dark Illusion | Общие вопросы Delphi | 0 | 28.03.2012 20:33 |
судоку | sergio11 | C# (си шарп) | 8 | 09.04.2011 21:33 |
Судоку | zmey31313 | Софт | 7 | 13.05.2010 16:12 |