Консультация № 136584
13.05.2008, 04:49
0.00 руб.
0 1 1
Добрый день, уважаемые знатоки программирования!
Есть задача, которую мы никак не можем написать и просим помощи! (

Даны 2 матрицы A и B размерностью 5*5.
заполнить их обе с помощью генератора случайных чисел. Элементы матриц - целые числа в диапазоне от -2 до 9, кроме 0.

1)найти матрицу С равную A*B
2)отранжировать столбцы матрицы С по возрастанию элементов предпоследней нечетной строки получив матрицу D.
3)транспонировать матрицу D
4)элементы главной диагонали матрицы D кратные 3м заменить на 1111.

Заранее огромное спасибо всем, кто поможет!! =)

Обсуждение

давно
Профессор
401888
1232
13.05.2008, 09:54
общий
это ответ
Здравствуйте, Lera Iv.!
Решение задачи с небольшими пояснениями в приложении. Объяснять как создается и выводится матрица, как выполняется сортировка или перестановка обменом, замена элементов матрицы думаю не стоит, поскольку это вам должно быть известно. Если что подзабыли – в учебники. Умножение матриц выполнено точно так, как оно описано в учебниках, думаю тоже разберетесь. Программа длинная и если описывать каждый шаг, получится мини-мануал. Если что конкретно непонятно, пишите, спрашивайте. Чтобы не переписывать такой длинный код попробую прикрепить саму программу. Успехов в учебе!

Приложение:
uses crt;const n=5;var a,b,c,d:array[1..n,1..n] of integer; i,j,k,s,x:integer;beginclrscr;randomize;{Zapolnenie matric bez nolej}writeln(‘Matrica A:‘);for i:=1 to n do begin for j:=1 to n do begin repeat {в цикле выбираем числа из диапазона [-2,9], <>0} a[i,j]:=random(12)-2; until a[i,j]<>0; write(a[i,j]:4); end; writeln; end;readln;writeln(‘Matrica B:‘);for i:=1 to n do begin for j:=1 to n do begin repeat b[i,j]:=random(12)-2; until b[i,j]<>0; write(b[i,j]:4); end; writeln; end;readln;{Umnozenie matric}for k:=1 to n dofor j:=1 to n do begin c[k,j]:=0; for i:=1 to n do begin{считаем сумму произведений элементов i-ой строки А на элементы i-го столбца В} c[k,j]:=c[k,j]+a[k,i]*b[i,j]; end; end;writeln(‘Matrica C:‘);for i:=1 to n do begin for j:=1 to n do write(c[i,j]:5); writeln; end;readln;{Ranzirovanie matricy C}s:=3;for j:=1 to n-1 dofor k:=1 to n-1 doif c[s,k]>c[s,k+1] then begin for i:=1 to n do begin{сортируем обменом все строки по возрастанию строки 3} x:=c[i,k];c[i,k]:=c[i,k+1];c[i,k+1]:=x; end; end;writeln(‘Matrica D:‘);for i:=1 to n do begin for j:=1 to n do begin d[i,j]:=c[i,j]; write(d[i,j]:5); end; writeln; end;readln;{Transponirovanie matricy D}for i:= 1 to n dofor j:=1 to n doif j<i then begin{симметрично меняем элементы под главной диагональю с элементами над главной диагональю} x:=d[i,j];d[i,j]:=d[j,i];d[j,i]:=x; end;writeln(‘Matrica D_trans:‘);for i:=1 to n do begin for j:=1 to n do write(d[i,j]:5); writeln; end;readln;{Zamena elementov glavnoj diagonali}for i:=1 to n doif d[i,i] mod 3=0 then {главная диагональ} begin d[i,i]:=1111; end;writeln(‘Matrica D_zamena:‘);for i:=1 to n do begin for j:=1 to n do write(d[i,j]:5); writeln; end;readlnend.
Форма ответа