Во вложении показана принятая условная схема нумерации полей.
Предполагается, что если ферзь стоит на клетке с координатами (3,4), он может пойти по горизонтали, вертикали или диагонали. Соответствующие направления выделены цветом.
Чтобы взять фигуру (или пешку) противника по горизонтали, у обоих фигур должны быть одинаковы координаты строки (первые в паре).
Чтобы взять фигуру противника по вертикали, у обоих фигур должны быть одинаковы координаты столбца (вторые в паре в паре).
Наконец, чтобы взять фигуру противника по диагонали, у обоих фигур должна быть одинакова абсолютная величина разницы как между строками, так и между колонками.
Последнее правило взятия сложное, поэтому запишем его в условных обозначениях. Пусть Rq и Cq - соответственно номера строки и столбца, пересечение которых указывает положение клетки с ферзем. Пусть также фигура противника находится на клетке, заданной координатами Rx и Cx.
Тогда последнее правило можно записать в виде |Rq-Rx| = |Cq-Cx|
Теперь можно записать логическое выражение, значение которого истинно, если ферзь может взять фигуру (или пешку) противника.
(Rq=Rx) ∨ (Cq=Cx) ∨ (|Rq-Rx| = |Cq-Cx|)
<em>// PascalABC.NET 3.3, сборка 1625 от 17.01.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var (Rq,Cq):=ReadInteger2('Введите номера горизонтали и вертикали ферзя:');
var (Rx,Cx):=ReadInteger2('Введите номера горизонтали и вертикали фигуры:');
if (Rq=Rx) or (Cq=Cx) or (Abs(Rq-Rx)=Abs(Cq-Cx)) then Writeln('Yes')
else Writeln('No')
end.
<u>Пример</u>
Введите номера горизонтали и вертикали ферзя: 3 4
Введите номера горизонтали и вертикали фигуры: 6 1
Yes
Какой скажи рисунок надо сделать попробую помочь
247,128,346,427...выбирай любое.
В таких задачах необходимо математически сформулировать условия, которые строго ограничат выбранную область. Из рисунка видно, что x не может быть отрицательным (x >= 0), x <= 6, y <= 6. Также в первой четверти область ограничена окружностью, тут уже сложнее, если мне не изменяет память, то x*x+y*y<=6 (6 это радиус окружности). В четвертой четверти область задается уравнением прямой, и я совершенно не помню как они составляются (y = kx + b вроде?), поэтому ваша задача самостоятельно разобраться с этой прямой, условие будет вида y>=k*x+b.
Когда условия будут сформулированы, останется лишь записать программу, примерный вид программы будет следующим:
var x,y : integer;
begin
readln(x,y);
if (x >= 0) and (x <= 6) and (y <= 6) and (x*x+y*y <= 6) {and (еще одно условие)}
writeln('true')
else
writeln('false');
readln;
end.
1) найти убыль как к-во * 12%
2) найти прирост как к-во * 20%
3) к-во = к-во-убыль+прирост
выполнить 8 раз
var
x,a,b:real;
i:integer;
begin
x:=100000;
for i:=1 to 8 do
begin
a:=x*0.12;
b:=x*0.20;
x:=x+b-a;
end;
writeln(x);
end.