Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ матрицы,строки

Автор: mixail_01 15.09.2010 22:41

Сформировать матрицу 5 на 5, вывести номера полностью совпадающих строк.

Автор: Unconnected 15.09.2010 22:47

Как пробовал? smile.gif

Автор: mixail_01 15.09.2010 23:05

Дальше создания матрицы дело не идет, не знаю как сравнивать строки

Автор: Unconnected 15.09.2010 23:32


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 16.09.2010 17:44

А я бы поправил вот так:

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 16.09.2010 17:46

Спасибо всем!! good.gif