Помощь - Поиск - Пользователи - Календарь
Полная версия: Шахматная доска.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Tauka
Есть такие задачки:

Заданы координаты двух клеток на шахматной доске (x1,y1) i (x2,y2)
a)проверить будут ли они одного цвета
б) если на них разместить ферзей, будут ли они бить друг друга
в) если на них разместить коней, будут ли они бить друг друга

Спасибо за внимание! rolleyes.gif
VelarThind
Ну тут не очень сложно. Там есть закономерность, если четность-нечетность совпадает, например у первой (1;5), второй (2;4) то они будут одного цвета, т.к. у одной оба числа четны у другой оба нечетны(так же если (1;2) и (3;8)), а вот если будет (3;5) и (4;7) то и цвет разный, т.к. нет пар у обоих. (а)
VelarThind
Вот кое-что набил.

Код
var x1_,x2_,y1_,y2_:byte;

 procedure ProverKa1(x1, x2, y1, y2 : byte);
  begin
     x1 := (x1 mod 2) + (y1 mod 2);
     x2 := (x2 mod 2) + (y2 mod 2);
     if (x1=x2) or (x1-x2=2) or (x1-x2=-2) then writeln('a) ODNOGO CVETA')
     else writeln('a) rasnogo');
  end;

 procedure ProverKa2(x1, x2, y1, y2 : byte);
  begin
     if (x1 = x2) or (y1 = y2) then writeln('b) BIET') else
     if (x1 - y1) = (x2 - y2) then writeln('b) BIET') else
     if (x1 + y1) = (x2 + y2) then writeln('b) BIET') else
     writeln('b) Ne biet');
  end;

 procedure ProverKa3(x1,x2,y1,y2 : byte);
  begin
     if (x1 - x2 = 1) and (y1 - y2 = -2) then writeln('c) BIET') else
     if (x1 - x2 = -1) and (y1 - y2 = -2) then writeln('c) BIET') else
     if (x1 - x2 = -2) and (y1 - y2 = -1) then writeln('c) BIET') else
     if (x1 - x2 = -2) and (y1 - y2 = 1) then writeln('c) BIET') else
     if (x1 - x2 = -1) and (y1 - y2 = 2) then writeln('c) BIET') else
     if (x1 - x2 = 1) and (y1 - y2 = 2) then writeln('c) BIET') else
     if (x1 - x2 = 2) and (y1 - y2 = 1) then writeln('c) BIET') else
     if (x1 - x2 = 2) and (y1 - y2 = -1) then writeln('c) BIET') else
     writeln('c) Ne biet');
  end;

begin
  readln(x1_,x2_,y1_,y2_);
  ProverKa1(x1_,x2_,y1_,y2_);
  ProverKa2(x1_,x2_,y1_,y2_);
  ProverKa3(x1_,x2_,y1_,y2_);
  readln;
end.


Можно и через масивы, но что-то потянуло на математику.

VelarThind, теги [CОDE][/CОDE] для кого сделаны?
trminator
По-моему, ProverKa3 можно упростить примерно так:
Код

begin
       if abs(x1 - x2) * abs(y1 - y2) = 2 then writeln('c) BIET')
end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.