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

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

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

 
 Ответить  Открыть новую тему 
> ВЫЧЕСЛИТЬ МАТРИЦУ АВ-ВА, pascal почти не знаю нужна помощь!!!
многорассмотрительствующий
сообщение 16.12.2006 18:13
Сообщение #1





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

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


Даны квадратные матрицы А и В порядка n. Получить матрицу АВ-ВА.
Перемножение матриц я видел, а тут заглох. Нужна помощь.
Или ссылка. unsure.gif А может я туплююю mad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.12.2006 18:18
Сообщение #2


Гость






Сорри, но если ты видел перемножение матриц, то рядом же было и их сложение. Что мешает сделать так:

...
matrixMult(T1, A, B);
matrixMult(T2, B, A);
matrixSub(res, T1, T2);
...


Процедуру matrixMult смотреть здесь: Массивы. Матрицы. Типичные задачи.
matrixSub делается совершенно аналогично matrixAdd, но со знаком минус...
 К началу страницы 
+ Ответить 
многорассмотрительствующий
сообщение 16.12.2006 18:35
Сообщение #3





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

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


PROGRAM allan_28102006_1325;
{RAZNOST' PROIZVEDENi QvADRATNIx MATRIc AB - BA}
USES crt;
const size = 5;
const cell = 5;
const genM = 5;
TYPE DArray = Array[1..size,1..size]of integer;
var A,B,AB,BA,SubtArr : DArray;
var i,j,k : integer;

procedure multiple (in_arr01, in_arr02 : DArray; var RESULT : Darray);
var i,j,k : integer;
begin
for i:= 1 to high(in_arr02) do
for j:= 1 to high(in_arr01[1]) do begin
RESULT[i,j]:= 0;
for k:= 1 to high(in_arr02[1]) do
RESULT[i,j]:= RESULT[i,j] + in_arr01[i,k]*in_arr02[k,j];
end;
end;

procedure viewing (in_arr : DArray; X,Y : integer; Comment : String);
var i,j : integer;
begin
GotoXY (X,Y); Writeln (Comment);
for i:= 1 to high (in_arr) do begin
for j:= 1 to high (in_arr[1]) do begin
GotoXY (X+j*cell,Y+i); write(in_arr[i,j]);
end;
end;
end;

procedure generate (var in_arr : DArray);
var i,j : integer;
begin
for i:=1 to high (in_arr) do
for j:=1 to high (in_arr[1]) do
in_arr[i,j]:= random(GenM);
end;

procedure subtract (in_arr01, in_arr02: DArray; var RESULT : Darray);
var i,j : integer;
begin
for i:=1 to high (in_arr01) do
for j:=1 to high (in_arr01[1]) do
RESULT[i,j]:=in_arr01[i,j]-in_arr02[i,j];
end;
BEGIN
clrscr;
generate (A);
generate (B);


viewing (A,1,1,'First Array A:');
viewing (B,cell*(size+2),1,'Second Array B:');

multiple (A,B,AB);
viewing (AB,1,size+3,'First Multiple:');

multiple (B,A,BA);
viewing (BA,cell*(size+2),size+3,'Second Multiple:');

subtract (AB,BA,SubtArr);
viewing (SubtArr,1,(size+3)*2,'RESULT AB - BA:');

readln;

end.



Можно сделать более простую ?????

Сообщение отредактировано: volvo - 16.12.2006 19:51
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.12.2006 19:50
Сообщение #4


Гость






Во-первых, чего тегами не пользуешься?

Во-вторых, выводить матрицы можно и покрасивее:
procedure viewing (in_arr : DArray; X,Y : integer; Comment : String);
var i,j : integer;
begin
GotoXY (X,Y); Writeln (Comment);
for i:= 1 to high (in_arr) do begin
gotoxy(X, Y + i);
for j:= 1 to high (in_arr[1]) do write(in_arr[i,j]:cell);
end;
end;
(теперь по правому краю выравниваются как положительные, так и отрицательные числа)

Ну, и наконец, объясни, зачем тебе вся эта игра с high(in_arr02) и high (in_arr[1])? Не проще было бы использовать Size? blink.gif
 К началу страницы 
+ Ответить 

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

 



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