Задачка

  • Автор темы Автор темы Firiat
  • Дата начала Дата начала
F

Firiat

Привет Всем !!!!

Определить,угрожает ли ферзь, расположенный на поле ( n1,m1 ) шахматной доски ,фигуре, расположенной на поле ( n2,m2 ). ( где n1,m1,n2,m2 - натуральные числа от 1 до 8 ).
 
Таки в чем проблема? В алгоритме? Матрица целых чисел 8х8. начальное состояние - все нули. по координатам ферзя и фигуры - единицы. потом просуммировать вертикаль, где стоит ферзь. если сумма = 2, угрожает. в противном случае суммируем горизонталь. потом диагонали (по необходимости). если дошли до конца программы, значит не угрожает.
 
а код можно ?? гг))))
 
ясно....но я разберу её )))..спс
 
Если что, вот мои координаты. Решу. Недорого
648964446
sc2.domny@inbox.ru
 
Вот самый тривиальный алгоритм, без излишиств (массивов и прочего).. :-)) Смешной конечно, но логичный :-)
Правда пытается вычислять что будет если ферзь вылезит за поле :-))) Зато одним циклом :-))

C++:
#include <iostream>
#include <Windows.h>

using namespace std;
void main(void)
{
setlocale(LC_ALL,"Russian");
int px,py; //Фигура
int fx,fy; //Ферзь
cout<<"Введите координаты ферзя X,Y :";
scanf("%i,%i",&fx,&fy);

cout<<"Введите координаты фигуры X,Y :";
scanf("%i,%i",&px,&py);
cout<<endl;

bool Res = false;
for (int i = 1; i<8; i++)
{
//Диагональ
if ( fx-i == px && fy-i == py) { Res = true; break; }
if ( fx+i == px && fy+i == py) { Res = true; break; }
//Перпендикуляры к осям
if (fx-i == px && fy == py) { Res = true; break; }
if (fx+i == px && fy == py) { Res = true; break; }

if (fx == px && fy+i == py) { Res = true; break; }
if (fx == px && fy-i == py) { Res = true; break; }
}

if (Res)
{
cout<<"Усе, нет больше фигуры"<<endl;
} else cout<<"Все живы и счастливы :-)"<<endl;
}
 
Еще ифами мона описать :-)))) Но тогда это более мат. подход, зато самый короткий алгоритм

#include <iostream>

C++:
using namespace std;
void main(void)
{
setlocale(LC_ALL,"Russian");
int px,py; //Фигура
int fx,fy; //Ферзь
cout<<"Введите координаты ферзя X,Y :";
scanf("%i,%i",&fx,&fy);

cout<<"Введите координаты фигуры X,Y :";
scanf("%i,%i",&px,&py);
cout<<endl;

bool Res = false;
//Это условие для перпендикуляров к осям
if (fx == px || fy == py) Res = true;
//Это условие при диагоналях
if (px-py == fx-fy || px+py == fx+fy) Res = true;

if (Res)
{
cout<<"Усе, нет больше фигуры"<<endl;
} else cout<<"Все живы и счастливы :-)"<<endl;
}
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab