Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 162
от 27.04.2006, 17:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 178, Экспертов: 48
В номере:Вопросов: 1, Ответов: 2


Вопрос № 40978: Здравствуйте, уважаемые эксперты!!! у меня такой вопрос ... как написать процедуру,что бы оно провериала две матрицы,одинакови ли они или нет, с помощю обмена горизонтальниx и вертикальниx строк ... ЗАРАНЕ ОГРОМНОЕ СПАСИБО...

Вопрос № 40.978
Здравствуйте, уважаемые эксперты!!!
у меня такой вопрос ...
как написать процедуру,что бы оно провериала две матрицы,одинакови ли они или нет, с помощю обмена горизонтальниx и вертикальниx строк ...
ЗАРАНЕ ОГРОМНОЕ СПАСИБО
Отправлен: 22.04.2006, 00:02
Вопрос задал: Grigoryan Harut /Harutik (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Форсман Павел Вячеславович
Здравствуйте, Grigoryan Harut /Harutik!
Непонятен вопрос. Что такое "вертикальные строки"?
Предлагаю две функции:
1) Сравнение двух матриц - функция вернет True, если матрицы равны и False, если нет (CheckEq).
2) Если вы имеете в виду транспонирование матрицы, то воспользуйтесь этим вариантом (CheckEqT).
Функции оптимизированы по времени выполнения, хотя можно вместо конструкций while применить банальный for, но это будет не совсем правильно.
С уважением Форсман.

Приложение:

---------
Научить нельзя, но можно попробовать научиться!!!

Ответ отправил: Форсман Павел Вячеславович (статус: 1-ый класс)
Ответ отправлен: 22.04.2006, 06:53
Оценка за ответ: 5
Комментарий оценки:
спасибо за ответ , но мне не етого было нужен,наверное я не xорошо обеснил

Отвечает: Полховский Александр Владимирович
Здравствуйте, Grigoryan Harut /Harutik!
надо данная матрица (nxn, n всегда равна 4 , const n=4) проверять совпадаед ли он только с етой матрицой
0 1 1 0
1 0 1 1
1 1 0 1
0 1 1 0
с помощю обмена строк ето делается так
например если даная матрица такава
0 1 1 1
1 0 0 1
1 0 0 1
1 1 1 0
если у етого матрици обменим строки(горизонтальниx) 1 с 2-ой,3 с 4-ой,
1 0 0 1
0 1 1 1
1 1 1 0
1 0 0 1
потом обменим строки (вертикальниx) 1 с 2-ой,3 с 4-ой,
0 1 1 0
1 0 1 1
1 1 0 1
0 1 1 0
мы увижем что ета матрица совпадает с той матрицой ...


Задача довольно простая.
Нужно несколько преобразовать исходную матрицу и поэлементно сравнить её с "эталонной".

Для начала объявим все переменные, которые нам понадобятся:

program matrixcomparer;
uses
crt;
var
matrix1, matrix2: array[1..4, 1..4] of byte;
k1, k2:byte;


Теперь организуем ввод с клавиатуры элементов обеих матриц:

begin
clrscr;
for k1:=1 to 4 do
begin
write('Enter elements of the ', k1, ' row of the 1st matrix: ');
read(matrix1[1, k1]);
read(matrix1[2, k1]);
read(matrix1[3, k1]);
read(matrix1[4, k1]);
readln;
end;
writeln;
for k1:=1 to 4 do
begin
write('Enter elements of the ', k1, ' row of the 2nd matrix: ');
read(matrix2[1, k1]);
read(matrix2[2, k1]);
read(matrix2[3, k1]);
read(matrix2[4, k1]);
readln;
end;
writeln;


Меняем первую и вторую строки:

for k1:=1 to 4 do
begin
k2:=matrix2[k1, 1];
matrix2[k1, 1]:=matrix2[k1, 2];
matrix2[k1, 2]:=k2;
end;


Меняем третью и четвёртую строки:

for k1:=1 to 4 do
begin
k2:=matrix2[k1, 4];
matrix2[k1, 4]:=matrix2[k1, 3];
matrix2[k1, 3]:=k2;
end;


Меняем первый и второй столбцы:

for k1:=1 to 4 do
begin
k2:=matrix2[1, k1];
matrix2[1, k1]:=matrix2[2, k1];
matrix2[2, k1]:=k2;
end;


Меняем третий и четвртый столбцы:

for k1:=1 to 4 do
begin
k2:=matrix2[4, k1];
matrix2[4, k1]:=matrix2[3, k1];
matrix2[3, k1]:=k2;
end;


Проводим сравнение элементов (выводим сообщение, если какие-то элементы не равны):

for k1:=1 to 4 do
for k2:=1 to 4 do
if matrix1[k1, k2]=matrix2[k1, k2]
then writeln('[', k1, ':', k2, '] don''t match');


Завершаем:

writeln('Finished');
readln;
end.


Можно было бы не менять местами элементы, а сравнивать исходную матрицу с теми элементами, которые появляются в нужном месте после замены строк/столбцов. Но это не так понятно.
---------
Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Практикант)
Ответ отправлен: 23.04.2006, 15:38
Оценка за ответ: 5
Комментарий оценки:
ето тоже не то что я xотел,но все равно спасибо


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.30 от 09.04.2006
Яндекс Rambler's Top100

В избранное