вторник, 22 апреля 2014 г.

Лучшие решения задачи про ферзя. (5 "Г")

Лучше всех справились: Осинцев Николай, Колтаков Михаил! 5+++


См. решения.


1. var x,y,xf,yf,i,j:integer;
    a:array[1..8,1..8] of integer;
begin
 readln(xf,yf);
 x:=xf; y:=yf;
 for i:=1 to 8 do
  for j:=1 to 8 do
   a[i,j]:=0;
 for i:=1 to 8 do begin
  for j:=1 to 8 do
   write(a[i,j]);
  writeln;
 end;
 a[xf,yf]:=2;
 for j:=1 to 8 do
  a[xf,j]:=1;
 for i:=1 to 8 do
  a[i,yf]:=1;
  while (x>1) and (y>1) do begin
   x:=x-1; y:=y-1;
   a[x,y]:=1;
  end;
  x:=xf; y:=yf;
  while (x<8) and (y>1) do begin
   x:=x+1; y:=y-1;
   a[x,y]:=1;
  end;
  x:=xf; y:=yf;
  while (x<8) and (y<8) do begin
   x:=x+1; y:=y+1;
   a[x,y]:=1;
  end;
  x:=xf; y:=yf;
  while (x>1) and (y<8) do begin
   x:=x-1; y:=y+1;
   a[x,y]:=1;
  end;
 writeln;
 for i:=1 to 8 do begin
  for j:=1 to 8 do
   write(a[i,j]);
  writeln;
 end;
end.

2.program ChessQueen;
const n=8;
var
  a:array[1..n,1..n]of string;
  i,j,x1,x2:integer;
  r1,r2:integer;
begin
  writeln('vvedite koordinati ferzya');
  readln(x1,x2);
  writeln;
  writeln('"0" - DOESNt walk');
  writeln('"1" - WALKs');
  writeln('"F" - ferz');
  writeln;
  r1:=x1;
  r2:=x2;
  for i:=n downto 1 do
    for j:=1 to n do
      a[i,j]:='0';
  for i:=n downto 1 do
    a[i,x2]:='1';
  for j:=1 to n do
    a[x1,j]:='1';
  for i:=n downto 1 do
    for j:=1 to n do
      while ((r1<=n)and(r1>=1))and((r2<=n)and(r2>=1)) do  
      begin
        a[r1,r2]:='1';
        inc(r1);
        inc(r2);
      end;
  r1:=x1;
  r2:=x2;
  for i:=n downto 1 do
    for j:=1 to n do
      while ((r1<=n)and(r1>=1))and((r2<=n)and(r2>=1)) do  
      begin
        a[r1,r2]:='1';
        r1:=r1-1;
        r2:=r2-1;
      end;
  r1:=x1;
  r2:=x2;    
  for i:=n downto 1 do
    for j:=1 to n do
      while ((r1<=n)and(r1>=1))and((r2<=n)and(r2>=1)) do  
      begin
        a[r1,r2]:='1';
        r1:=r1-1;
        inc(r2);
      end;
  r1:=x1;
  r2:=x2;    
  for i:=n downto 1 do
    for j:=1 to n do
      while ((r1<=n)and(r1>=1))and((r2<=n)and(r2>=1)) do  
      begin
        a[r1,r2]:='1';
        inc(r1);
        r2:=r2-1;
      end;    
  a[x1,x2]:='F';      
  for i:=n downto 1 do
  begin
    for j:=1 to n do
      write(a[i,j],' ');
    writeln;
  end;
end.  

program pp;
var a:array [1..8, 1..8] of integer;
i, j, x, y, x1, y1:integer;
begin
writeln ('Введите координаты ферзя.');
readln (x, y);
for i:=1 to 8 do
for j:=1 to 8 do
a[i, j]:=0;

for i:=x to x do
for j:=1 to 8 do
a[i, j]:=1;

for i:=1 to 8 do
for j:=x to x do
a[i, j]:=1;


while (x<9) and (y<9) do
begin
a[x, y]:=1;
x:=x+1;
y:=y+1;
end;

x1:=x;
y1:=y;
x:=1;
y:=1;
while (x<x1) and (y<y1) do
begin
a[x, y]:=1;
x:=x+1;
y:=y+1;
end;

x:=1;
y:=8;
while (x<9) and (y<9) do
begin
a[x, y]:=1;
x:=x+1;
y:=y-1;
end;
x1:=x;
y1:=y;
x:=1;
y:=1;
while (x<x1) and (y<y1) do
begin
a[x, y]:=1;
x:=x-1;
y:=y-1;
end;
for i:=1 to 8 do
begin
for j:=1 to 8 do
write (a[i, j]);
writeln;
end;

end.