| В шашечном эндшпиле остались белая дамка и две черных пешки, позиции которых известны. Ход белых. Сможет ли дамка срубить одну или сразу обе пешки?Суть: если пешка стоит не у края и выполняется условие : координаты дамки x1,y1, координаты пешки x2,y2, координаты второй пешки x3, y2
 Условие расположения на одной диагонали: abs (x1 – x2) = abs (y1 – y2)
 Входные данные: координаты дамки и пешек
 Выходные: Доска - матрица 8х8, пустые клетки – «.», дамка – «D», пешки – «P». Количество бьющихся пешек
     program z2; var i,j,s:integer; x:array [1..3] of integer; y:array [1..3] of integer; d:array [1..8,1..8] of char; f,f1:text; begin assign(f,'i2.txt'); reset(f); assign(f1,'o2.txt');rewrite(f1); for i:=1 to 3 do read(f,x[i],y[i]);   {заполнение и вывод доски} for i:=1 to 8 do for j:=1 to 8 do if (i=x[1]) and (j=y[1]) then d[i,j]:='D'  else if ((i=x[2]) and (j=y[2])or (i=x[3]) and (j=y[3]))then d[i,j]:='P' else d[i,j]:='.'; for i:=1 to 8 do begin for j:=1 to 8 do write(f1,d[i,j],' ');writeln(f1);end;   {проверка условия на бой пешек} if (abs(x[1]-x[2])=abs(y[1]-y[2])) and (x[2]<>1) and (x[2]<>8) and (y[2]<>1) and (y[2]<>8) then s:=s+1; if (abs(x[1]-x[3])=abs(y[1]-y[3])) and (x[3]<>1) and (x[3]<>8) and (y[3]<>1) and (y[3]<>8) then s:=s+1; if (abs(x[2]-x[3])=abs(y[2]-y[3])) and (abs(x[2]-x[3])=1) or (abs(y[2]-y[3])=1) then s:=0; writeln(f1,s); close(f); close(f1); end. |