Помощь - Поиск - Пользователи - Календарь
Полная версия: матрицы,строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
mixail_01
Сформировать матрицу 5 на 5, вывести номера полностью совпадающих строк.
Unconnected
Как пробовал? smile.gif
mixail_01
Дальше создания матрицы дело не идет, не знаю как сравнивать строки
Unconnected

const m=5;

var matr:array[1..m,1..m] of byte;
i,j:byte;
st:set of byte=[];

function check(s1,s2:byte):boolean;
var u:byte;
begin
result:=true;
for u:=1 to m do if matr[s1,u]<>matr[s2,u] then begin
result:=false;
break;
end;
end;

begin
randomize;
for i:=1 to m do
for j:=1 to m do read(matr[i,j]);

for i:=1 to m do begin
if not(i in st) then begin
for j:=1 to m do
if (i<>j) and (check(i,j)) then begin //убрал одну проверку
writeln(i,' ',j);
st:=st+[i]+[j];
end;
end;
end;
readln;
end.


Попробуй это.
volvo
А я бы поправил вот так:
var printed: boolean;
{ ... }
for i := 1 to m do
begin
printed := false;
if not (i in st) then
begin
for j := i + 1 to m do
if check(i, j) then
begin
if not printed then
begin
write(i, ' ');
printed := true;
end;
write(j, ' ');
st := st + [i, j];
end;
end;
if printed then writeln;
end;

Во-первых, условие (i <> j) тоже оказывается лишним, а во-вторых, более правдоподобный (ну, скажем, более ожидаемый) вывод результата: на матрице
1 2 3 4 5
2 4 6 2 5
1 2 3 4 5
2 4 6 2 5
1 2 3 4 5
выдаст
1 3 5
2 4
, а не
1 3
1 5
2 4
, как первоначальный вариант...
mixail_01
Спасибо всем!! good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.