IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Задача в паскале "Ход конем" (https://www.imho.ws/showthread.php?t=104376)

leahov 01.06.2006 16:00

Задача в паскале "Ход конем"
 
помогите решить задачу
Даны две литеры - латинская буква (от a до h) и цифра (от 1 до 8). Рассматривая их как координаты по-ля шахматной доски, на котором находится конь, нари-совать шахматную доску, пометив крестиками все поля, которые «бьет» этот конь, и ноликами все остальные.

Kvarx 01.06.2006 19:03

А в чем проблема-то? Конь знаешь, как ходит?

Ну если в лоб, то заводишь двумерный массив изначально заполненный нулями. Ну а потом ручками ставишь единички в битых конем полях. Всего максимум 8 вариантов ну и проверяешь, чтоб за границы поля не вылезало. В общем случае получится меньше единичек.

leahov 02.06.2006 07:53

Проблема в том что я не знаю как сделать шахматную доску и привязать к ней координаты

ЕЖ 02.06.2006 09:30

leahov
Что значит сделать шахматную доску? Тебе требуется её нарисовать что-ли? Если да, то тут вопрос встает о среде программирования которую ты используешь (TurboPascal/Delphi), графический или текстовый режим. А в памяти программы, как тебе уже сказали, шахматная доска должна быть представлена для твоего случая двумерным массивом чисел, отражающих некие состояния.

v_mirgorodsky 02.06.2006 11:46

Цитата:

Сообщение от leahov
Проблема в том что я не знаю как сделать шахматную доску и привязать к ней координаты

Похоже понял, что вызывает трудность. Проще всего транслировать маленькие буквы латинского алфавита в цифры путем вычитания из кода буквы кода буквы 'a'. Таким образом буквы легко трансформируются в коды от 0 до 7. Из цифры таким же образом следует вычесть 1. Таким образом получаем два индекса, которые можно легко использовать для индексации по двумерному массиву.

С ходом коня еще проще. Переводим текущую позицию коня в индексы и рассчитываем возможные положения его после хода. Как верно было замечено - их восемь. Далее проверяем полученные координаты на выход за пределы доски и в нужные места на доске проставляем единицы.

Gunslinger 02.06.2006 12:39

Цитата:

v_mirgorodsky:
Проще всего транслировать маленькие буквы латинского алфавита в цифры путем вычитания из кода буквы кода буквы 'a'
Ну если делать так, то надо еще не забыть перед преобразованием в код буквы, сделать ее в нижнем регистре (lowercase), а то мало как юзер введет

Andrewpg 02.06.2006 13:49

Ну и в добавку: в паскале индексы массива не обязательно должны быть числовыми:
array [1..8,a..h] должно работать.

leahov 02.06.2006 13:51

Задача в аскале. шахматку нарисовал - вот код


что делать дальше

leahov 02.06.2006 15:52

а почему 8 ходов? я их штук 40 насчитал

Kvarx 02.06.2006 16:00

Ну а теперь "интеллектуальную часть". Прочти второй пост еще разок :biggrin: Двуммерный массив и будет доской. Каждому его элементу будет соответствовать поле шахматной доски. (1, 1) - A1, (2,2) -B2, (1,8) - A8

Индекс, который буквенный переводишь в число, как написано в 5-ом посте.

Почему 40 то? Максимум 8. Конь ходит буквой Г, или может ты его со слоном путаешь или ферзем?

leahov 02.06.2006 16:19

ничего не понял, можешь в коде показать, я посмотрю уже в самом паскале :молись:


Часовой пояс GMT +4, время: 03:33.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.