IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> матрицы,строки
mixail_01
сообщение 15.09.2010 18:41
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: mixa

Репутация: -  0  +


Сформировать матрицу 5 на 5, вывести номера полностью совпадающих строк.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 15.09.2010 18:47
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


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


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mixail_01
сообщение 15.09.2010 19:05
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: mixa

Репутация: -  0  +


Дальше создания матрицы дело не идет, не знаю как сравнивать строки
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 15.09.2010 19:32
Сообщение #4


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +



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.


Попробуй это.

Сообщение отредактировано: Unconnected - 15.09.2010 19:45


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.09.2010 13:44
Сообщение #5


Гость






А я бы поправил вот так:
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 13:46
Сообщение #6





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: mixa

Репутация: -  0  +


Спасибо всем!! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 23.04.2024 17:40
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"