// PascalABC.NET 3.1, сборка 1250 от 28.05.2016procedure MatInput(a:array[,] of integer);begin Writeln('Вводите элементы матрицы построчно, в конце нажимая Enter'); for var i:=0 to Length(a,0)-1 do begin Write(i+1,': '); for var j:=0 to Length(a,1)-1 do Read(a[i,j]); end end;procedure MatPrint(a:array[,] of integer);begin for var i:=0 to Length(a,0)-1 do begin for var j:=0 to Length(a,1)-1 do Print(a[i,j]); Writeln end end;function IsEqual(a:array[,] of integer; j1,j2:integer; flag:array of boolean):boolean;// равны ли столбцы с индексами j1 и j2begin if flag[j2]=False then begin Result:=True; for var i:=0 to Length(a,0)-1 do if a[i,j1]<>a[i,j2] then begin Result:=False; Break end; flag[j2]:=Result endend;begin var n:=ReadInteger('Задайте число строк (столбцов) матрицы:'); var a:array[,] of integer; var m:=ArrFill(n,False); SetLength(a,n,n); MatInput(a); Writeln('*** Принятая матрица ***'); MatPrint(a); var k:=1; for var i:=0 to n-2 do for var j:=i+1 to n-1 do if IsEqual(a,i,j,m) then Inc(k); if k>1 then Writeln('Количество совпадающих столбцов равно ',k) else Writeln('нет совпадающих столбцов')end.
Тестовое решениеЗадайте число строк (столбцов) матрицы: 3Вводите элементы матрицы построчно, в конце нажимая Enter1: 1 2 22: 3 5 53: 2 2 2*** Принятая матрица ***1 2 2 3 5 5 2 2 2 Количество совпадающих столбцов равно 2