Advertisement
alvsjo

Dame

Dec 5th, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.49 KB | None | 0 0
  1. //program pomocu koga se odredjuju svi polozaji osam dama na sah tabli
  2. //takvi da se dame medjusobno ne napadaju
  3. program dame;
  4.  
  5. type
  6.     niz = array[1..30] of integer;
  7. var
  8.  n,i,p,k,broj:integer;
  9.  d: niz;
  10.  //d[i]=j znaci da u i-toj koloni dama se nalazi u vrsti j
  11.  
  12.  procedure UnosNiza (var n:integer;var x:niz);
  13.  var i:integer;
  14.  begin
  15.     write('Broj clanova niza: ');
  16.     readln(n);
  17.     for i:=1 to n do
  18.         begin
  19.         write ('x[',i,']=');
  20.         readln(x[i]);
  21.         end;
  22.  end;
  23.  
  24.  procedure StampaTable;
  25.  var i,j:integer;
  26.  begin
  27.     writeln;
  28.     for j:=8 downto 1 do
  29.     begin
  30.         for i:=1 to 8 do
  31.             if(d[i]=j) then write(' * ')
  32.             else write (' 0 ');
  33.         writeln;
  34.         writeln;
  35.     end;
  36.  
  37.  end;
  38.  
  39. function slobodno(k,v:integer):boolean;
  40. //ako je polje slobodno vraća true
  41. var i,j:integer;
  42. begin
  43.     slobodno:=true;
  44.     for i:=1 to k-1 do
  45.         if d[i]=v then slobodno:=false;
  46.     i:=k-1; j:=v-1;
  47.     while (i>=1) and (j>=1) do
  48.     begin
  49.         if i-d[i]=k-v then slobodno:=false;
  50.         i:=i-1;
  51.         j:=j-1;
  52.     end;
  53.     i:=k-1; j:=v+1;
  54.     while (i>=1) and (j<=8) do
  55.     begin
  56.         if i+d[i]=k+v then slobodno:=false;
  57.         i:=i-1;
  58.         j:=j+1;
  59.     end;
  60. end;
  61.  
  62.  
  63.  procedure dama(k,v:integer);
  64.  var j:integer;
  65. begin
  66.     d[k]:=v;
  67.     if k=8
  68.     then
  69.         begin
  70.         broj:=broj+1;
  71.         writeln('resenje broj: ',broj);
  72.         writeln;
  73.         stampaTable;
  74.         readln;
  75.         d[k]:=0;
  76.         end
  77.     else
  78.         begin
  79.         for j:=1 to 8 do
  80.             if (slobodno(k+1,j)) then dama(k+1,j);
  81.         end;
  82. end;
  83.  
  84.  
  85.  
  86.  begin
  87.         broj:=0;
  88.     for i:=1 to 8 do d[i]:=0;
  89.     for i:=1 to 8 do dama(1,i);
  90.  
  91.     readln;
  92.  
  93.  end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement