Задчка на С. Помогите плз.

  • Автор темы Mcicool
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Mcicool

#1
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число - номер вертикали (при счете слева направо), второе - номер горизонтали (при счете снизу вверх). Даны натуральные числа k,l,m,n, каждое из которых не превосходит восьми. Требуется: На поле (k,l) расположен ферзь.
Угрожает ли он полю (m,n) ??
 
T

teolog

#2
bool IsDangerForThis(POINT kl,POINT mn)
{
POINT vect;
vect.x=mn.x-kl.x;
vect.y=mn.y-kl.y;
if(vect.x==0 || vect.y==0 || abs(vect.x)==abs(vect.y)) //находятся на одной //прямой или диагонали
{
vect.x/=abs(vect.x);
vect.y/=abs(vect.y);
//направляющий вектор
POINT tmp=kl;
while(1)
{
tmp.x+=vect.x;
tmp.y+=vect.y;
if(tmp.x==mn.x && tmp.y==mn.y) return false;
if(!IsEmpty(tmp)) return false; //проверяем пусто ли поле
}

return true;
}


return false;
}
 
M

Mcicool

#3
Спасибо, только вопрос: Какие тут библиотеки используются?
Что такое bool??
Что такое Point??
 
M

Mcicool

#4
Хмм, кстати, мне же надо на чистом С, а bool это вроде из С++...
 
M

Mcicool

#7
Код:
#include <stdio.h>
#include <math.h>

int main()
{
double k,l,m,n;

printf("input k\n");
scanf("%lf", &k);
printf("input l\n");
scanf("%lf", &l);
printf("input m\n");
scanf("%lf", &m);
printf("input n\n");
scanf("%lf", &n);

if ((k-l==m-n)||(k==m)||(l==n)||(k+l==m+n))

printf("Danger!!!!");
else 
printf("No danger!");
return 0;
}
Вот так вроде? Эту элементарщину я решил...
 
Статус
Закрыто для дальнейших ответов.