М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Noooo123456
Noooo123456
05.05.2023 08:49 •  Информатика

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

👇
Ответ:
Dashuta03s
Dashuta03s
05.05.2023
Ферзь, стоящий в точке (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;
}
4,7(4 оценок)
Открыть все ответы
Ответ:
MD200405
MD200405
05.05.2023
Во-первых, ты плохо расслышал условие.
Вместо "нестарого" файла должно быть "растрового" файла.
Растровый файл, в отличие от векторного - это файл, в котором каждый пиксел описывается отдельно, палитрой цветов.
Картинка имеет размер 1024*512 пикселей.
Если бы каждый пиксель занимал 1 байт, тогда размер файла был бы
1024*512 байт = 512 Кбайт = 0,5 Мбайта
А у нас размер файла 1,5 Мбайта, то есть в 3 раза больше.
Значит, каждый пиксел занимает 3 байта = 3*8 = 24 бита.
Эта глубина цвета называется True Color и дает
2^24 = 16777216 цветов в палитре.
4,4(10 оценок)
Ответ:
sansanetflower
sansanetflower
05.05.2023
X увеличивается в цикле с 1 до 4, каждый раз на 1.
y каждый раз увеличивается в 2 раза, начиная с 1 и до 2^4 = 16.
1) Тело цикла исполнится 4 раза.
2) x примет значение 5.
3) y примет значение 16.
4) Если написать x <= 5, то тело цикла исполнится 5 раз.
На выходе будет x = 6, y = 32.
5) Если написать x >= 5, то тело цикла не будет исполнено ни разу, потому что условие сразу не выполняется.
6) Если написать x > 0, то программа зациклится. Цикл будет исполняться бесконечно, потому что x всегда > 0.
7) Если убрать команду x:=x+1, то программа тоже зациклится. Выхода не будет, потому что x всегда остается равным 1 < 5.
8) Если написать команду x:=x+2, то тело цикла исполнится 2 раза:
при x := 1 и при x := 3. На третий раз станет x = 5 и будет выход из цикла.
9) Если написать команду x:=x-1, то программа зациклится. Выхода не будет, потому что x будет уменьшаться и всегда останется < 5.
4,4(39 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ