![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Виликан |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Виталий Репутация: ![]() ![]() ![]() |
Поле шахматной доски определяется парой натуральных чи-сел, каждое из которых не превосходит восьми: первое число – номер вертикали (при счете слева направо), второе – номер горизонтали (при счете снизу вверх). Даны натуральные числа 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 |
![]()
Сообщение
#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 |
![]()
Сообщение
#3
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Прочитай, пожалуйста, про приоритет операций - сразу же поймешь.
Цитата другой способ решения пункта а if (k+l+m+n)mod 2 =0 then |
-TarasBer- |
![]()
Сообщение
#4
|
Гость ![]() |
Если пытаться приделать логичность, то тогда так:
if odd(k xor l) = odd(m xor n) then... А сумма может сделать плохо, если координаты заданы типом-диапазоном. |
Виликан |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Виталий Репутация: ![]() ![]() ![]() |
Всем большое спасибо... все советы полезны
![]() |
Виликан |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Виталий Репутация: ![]() ![]() ![]() |
Вот так я расправился с b, а вот насчет с вопрос:" Можно ли писать +- и если да, то почему не работает?" Помогите кто чем может ![]() |
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Вот так я расправился с b, а вот насчет с вопрос:" Можно ли писать +- и если да, то почему не работает?" Помогите кто чем может ![]() В "b" нужно добавить еще проверку равнства разностей. Нет, писать "+-" нельзя. Можешь использовать конструкцию с модулем: if Abs(k-m)=1 then .. исправил описку Сообщение отредактировано: Lapp - 22.04.2011 9:57 -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
![]()
Сообщение
#8
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> 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 |
![]()
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
if sqr(k-m) + sqr(l-n) = 5 then Это хорошо тем, что имеет ясную графическую интерпретацию: цетры битых полей лежат на окружности с радиусом Sqrt(5). Достаточно посмотреть на доску, чтоб в этом убедиться. Но вот интересно, что эта мысль приходит после выписывания уравнения, а не при первом взгляде на доску.. )) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Polinka |
![]()
Сообщение
#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 |
![]()
Сообщение
#11
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Неправильно.
Не работает для k=1 l=2 m=2 n=1 -------------------- |
Гость |
![]()
Сообщение
#12
|
Гость ![]() |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:18 |