Saturday, October 17, 2015

Pascal: Латинский квадрат на паскале

Лати́нский квадра́т n-го порядка — таблица L=(lij) размеров n × n, заполненная n элементами множества M таким образом, что в каждой строке и в каждом столбце таблицы каждый элемент из M встречается в точности один раз.


  1. program lat_kvadrat;
  2. var a:array[1..5,1..5] of integer;
  3.     i, j, k, n, l: integer;
  4.     f: text;
  5.     s, All: set of byte;
  6. begin
  7.     assign(f,'lat.dat');
  8.     reset(f);
  9.     readln(f,n);
  10.      for i:=1 to n do begin
  11.       for j:=1 to n do
  12.        Read(f,a[i,j]);
  13.        Readln(f);
  14.       end;
  15.       close(f);
  16.                  All:= [1];
  17.                  For i:=2 to n do
  18.                  All:=All+[i];     //подготовка множества для сравнения
  19.                  For i:=1 to n do  //проверка по строкам
  20.                  begin
  21.                    s:= [];
  22.                    for j:=1 to n do s:= s + [a[i,j]];
  23.                       if s<>All then
  24.                       begin
  25.                        writeln('non-latin');
  26.                        halt;
  27.                       end;
  28.                  end;
  29.                           for j:=1 to n do   //проверка по столбцам
  30.                           begin
  31.                            s:= [];
  32.                            for i:=1 to n do
  33.                            s:= s + [a[i,j]];
  34.                              if s<>All then
  35.                              begin
  36.                               writeln('non-latin');
  37.                               halt;
  38.                               end;
  39.                           end;
  40.                  Writeln('latin');
  41.        // readln;
  42.       end.

No comments:

Post a Comment