шахматы, проверка на чет. нечет. сразу 4 переменных |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
шахматы, проверка на чет. нечет. сразу 4 переменных |
Виликан |
20.04.2011 20:56
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Виталий Репутация: 0 |
Поле шахматной доски определяется парой натуральных чи-сел, каждое из которых не превосходит восьми: первое число – номер вертикали (при счете слева направо), второе – номер горизонтали (при счете снизу вверх). Даны натуральные числа k, l, m, n, каждое из которых не превосходит восьми. Требуется:
a) Выяснить, являются ли поля (k, l) и (m, n) полями одного цвета; b) На поле (k, l) расположен ферзь. Угрожает ли он полю (m, n)? c) Аналогично b), но ферзь заменяется на коня. d) Выяснить, можно ли с поля (k, l) одним ходом ладьи попасть на поле (m, n). Если нет, то выяснить, как это можно сделать за два хода (указать поле, на которое приводит первый ход). e) Аналогично d), но ладья заменяется на ферзя. f) Аналогично d), но ладья заменяется на слона. Предполагается, что указанные поля имеют один и тот же цвет. попрошу всю задачу не решать, а только помогать по мере поступления вопросов... извините, если что не так, я тут новенький ! . паскаль выдает ошибку №89 в поле с if хотя скобки вроде две)) что не так? если есть другой способ решения пункта а интересно послушать! |
vlads |
20.04.2011 22:37
Сообщение
#2
|
Гость |
Цитата хотя скобки вроде две)) что не так? Вот то, что их только 2 и не так. Каждое условие оберни скобками - будет компилироваться.if (k mod 2=0) and (l mod 2=0) and (m mod 2=0) and (n mod 2=0) orИначе компилятор неправильно разберет выражение. Попробуй самостоятельно расставить в выражении if (k mod 2 = 0 and l mod 2 = 0) then скобки согласно приоритетам операций - увидишь в чем ошибка. Кстати, именно из-за того,что приоритет у and выше чем у or, нет необходимости оборачивать скобками еще и оба условия с разных сторон от or |
sheka |
20.04.2011 22:41
Сообщение
#3
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Прочитай, пожалуйста, про приоритет операций - сразу же поймешь.
Цитата другой способ решения пункта а if (k+l+m+n)mod 2 =0 then |
-TarasBer- |
21.04.2011 13:31
Сообщение
#4
|
Гость |
Если пытаться приделать логичность, то тогда так:
if odd(k xor l) = odd(m xor n) then... А сумма может сделать плохо, если координаты заданы типом-диапазоном. |
Виликан |
21.04.2011 18:42
Сообщение
#5
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Виталий Репутация: 0 |
Всем большое спасибо... все советы полезны
|
Виликан |
21.04.2011 23:34
Сообщение
#6
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Виталий Репутация: 0 |
Вот так я расправился с b, а вот насчет с вопрос:" Можно ли писать +- и если да, то почему не работает?" Помогите кто чем может |
Lapp |
21.04.2011 23:52
Сообщение
#7
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Вот так я расправился с b, а вот насчет с вопрос:" Можно ли писать +- и если да, то почему не работает?" Помогите кто чем может В "b" нужно добавить еще проверку равнства разностей. Нет, писать "+-" нельзя. Можешь использовать конструкцию с модулем: if Abs(k-m)=1 then .. исправил описку Сообщение отредактировано: Lapp - 22.04.2011 9:57 -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
22.04.2011 8:57
Сообщение
#8
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> if (k=m+-1) and (l=n+-2)or (k=m+-2) and (l=n+-1)then
if sqr(k-m) + sqr(l-n) = 5 then -------------------- |
Lapp |
22.04.2011 10:03
Сообщение
#9
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
if sqr(k-m) + sqr(l-n) = 5 then Это хорошо тем, что имеет ясную графическую интерпретацию: цетры битых полей лежат на окружности с радиусом Sqrt(5). Достаточно посмотреть на доску, чтоб в этом убедиться. Но вот интересно, что эта мысль приходит после выписывания уравнения, а не при первом взгляде на доску.. )) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Polinka |
10.05.2011 11:26
Сообщение
#10
|
Гость |
попробуй так (((k mod 2=0) and (l mod 2=0) and (m mod 2=0) and (n mod 2=0)) or ((k mod 2=1) and (l mod 2=1) and (m mod 2=1) and (n mod 2=1)))
|
TarasBer |
10.05.2011 11:46
Сообщение
#11
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Неправильно.
Не работает для k=1 l=2 m=2 n=1 -------------------- |
Гость |
3.01.2012 15:29
Сообщение
#12
|
Гость |
как в этом можно что то понять
|
Текстовая версия | 13.05.2024 9:43 |