IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Шахматная доска., проверить будут ли бить друг друга фигур
Tauka
сообщение 7.04.2005 18:04
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 28

Репутация: -  0  +


Есть такие задачки:

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

Спасибо за внимание! rolleyes.gif


--------------------
С уважением,
Таука.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
VelarThind
сообщение 7.04.2005 22:37
Сообщение #2


Гость






Ну тут не очень сложно. Там есть закономерность, если четность-нечетность совпадает, например у первой (1;5), второй (2;4) то они будут одного цвета, т.к. у одной оба числа четны у другой оба нечетны(так же если (1;2) и (3;8)), а вот если будет (3;5) и (4;7) то и цвет разный, т.к. нет пар у обоих. (а)
 К началу страницы 
+ Ответить 
VelarThind
сообщение 8.04.2005 19:54
Сообщение #3


Гость






Вот кое-что набил.

Код
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] для кого сделаны?

Сообщение отредактировано: volvo - 8.04.2005 20:01
 К началу страницы 
+ Ответить 
trminator
сообщение 9.04.2005 12:50
Сообщение #4


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

Репутация: -  4  +


По-моему, ProverKa3 можно упростить примерно так:
Код

begin
       if abs(x1 - x2) * abs(y1 - y2) = 2 then writeln('c) BIET')
end;


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 10:14
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"