В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
BifLee
BifLee
26.03.2023 11:48 •  Информатика

На шахматной доске в клетке (x1, y1) находится шахматный ферзь. определите, бьет ли он клетку (x2, y2). на вход программе четыре целых числа x1, y1, x2, y2 (1≤x1,y1,x2,y2≤8) — координаты двух полей на шахматной доске размера 8×8. требуется вывести 1, если ферзь бьет клетку, или 0, если нет.с++

Показать ответ
Ответ:
RaiderUp
RaiderUp
04.10.2020 07:36
Ферзь, стоящий в точке (x_1;y_1), может бить фигуры, у которых:
    1) x = x_1
    2) y = y_1
    3) координаты находятся по диагонали от ферзя.

Имеем не самую лучшую и чистую, но рабочую программку:

#include <cstdio>

int main() {
  int x1, x2, y1, y2, x_d1, y_d1, x_d2, y_d2;
  printf("x1=");
  scanf("%d", &x1);
  printf("y1=");
  scanf("%d", &y1);
  printf("x2=");
  scanf("%d", &x2);
  printf("y2=");
  scanf("%d", &y2);

  /* Проверка на линейные совпадения */
  if ( (x1 == x2) or (y1 == y2) ) {
    printf("1");
    return 1;
  }

  /* Поиск пересечения с диагональю 1 */
  x_d1 = x1;
  y_d1 = y1;
  while ( (x_d1 > 1) and (y_d1 > 1) ) {
    x_d1--;
    y_d1--;
    if ( (x2 == x_d1) and (y2 == y_d1) ) {
      printf("1");
      return 1;
    }
  }
  while ( (x_d1 < 8) and (y_d1 < 8) ) {
    x_d1++;
    y_d1++;
    if ( (x2 == x_d1) and (y2 == y_d1) ) {
      printf("1");
      return 1;
    }
  }

  /* Поиск пересечения с диагональю 2 */
  x_d2 = x1;
  y_d2 = y1;
  while ( (x_d2 < 8) and (y_d1 > 1) ) {
    x_d1++;
    y_d1--;
    if ( (x2 == x_d2) and (y2 == y_d2) ) {
      printf("1");
      return 1;
    }
  }
  while ( (x_d1 > 1) and (y_d1 < 8) ) {
    x_d1--;
    y_d1++;
    if ( (x2 == x_d2) and (y2 == y_d2) ) {
      printf("1");
      return 1;
    }
  }
 
  printf("0");
  return 0;
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота