Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2009, 12:09   #1
gnom 62
Новичок
Джуниор
 
Регистрация: 08.03.2009
Сообщений: 2
Восклицание составить программу умножения двух квадратных матриц

составить программу умножения двух квадратных матриц .
используя её,возвести в k-ю степень получившуюся матрицу
всё это сделать при помощи процедур

помогите ничё не получается)))))))
gnom 62 вне форума Ответить с цитированием
Старый 08.03.2009, 12:18   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Сделайте процедуру для умножения матриц. Об это посмторите, например, здесь:
http://programmersforum.ru/showthrea...E0%F2%F0%E8%F6
http://programmersforum.ru/showthread.php?t=40874
а также в поиске.
Затем в цикле вызовите ее k-1 раз.

Цитата:
помогите ничё не получается)))))))
Покажите наработки. Чтобы ничего не получалось, нужно сначала что-то сделать.

ps И в следующий раз с такими темами обращайтесь в "Помощь студентам".
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.03.2009, 18:14   #3
gnom63
Пользователь
 
Регистрация: 08.03.2009
Сообщений: 12
Восклицание вот

const k=3;
l=2;
var a:array[1..k,1..l]of integer;
b,c:array[1..k,1..k]of integer;
i,j,p:integer;
begin
randomize;
writeln('Matrica A:');
for i:=1 to k do
begin
for j:=1 to l do
begin
a[i,j]:=random(9)+1;
write(a[i,j]:3);
end;
writeln;
end;
readln;
writeln('Matrica B:');
for i:=1 to l do
begin
for j:=1 to k do
begin
b[i,j]:=random(9)+1;
write(b[i,j]:3);
end;
writeln;
end;
readln;
for p:=1 to k do
for j:=1 to k do
begin
c[k,j]:=0;
for i:=1 to k do
begin
c[p,j]:=c[p,j]+a[p,i]*b[i,j];
end;
end;
writeln('Matrica C=A*B:');
for i:=1 to k do
begin
for j:=1 to k do
write(c[i,j]:5);
writeln;
end;
readln;
end.

напишите пожалуйста как последнюю матрицу <С> возвести в квадрат
припомощи процедуры??????

заранеее благодарю
gnom63 вне форума Ответить с цитированием
Старый 08.03.2009, 20:01   #4
AlenkaM
 
Регистрация: 08.03.2009
Сообщений: 9
По умолчанию

В смысле, каждый элемент матрицы С возвести в квадрат?
Если да, то это делается так:

Procedure sqr_c (var x: Integer);
begin
x:= x*x;
end;

И всё. А вызывается процедура так:

for i:= 1 to k do
for j:= 1 to k do
sqr_c (c[i,j]);

P.S. Если надо возвести не во вторую степень, а в степень k, то в процедуре делаешь цикл:

Procedure sqr_c (var x: Integer);
var i, n: Integer;
begin
n:= 1;
for i:= 1 to k do
n:= n*x;
x:= n;
end;
Вроде как-то так
AlenkaM вне форума Ответить с цитированием
Старый 08.03.2009, 20:09   #5
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию {Параметры: X,Y - начальные массивы, Z - массив результат,t - размер}

Код:
Type
  Matrics=array[1..Nmax,1..Nmax] of integer;
....

Procedure Umn (X,Y:matrics; t:integer; Var Z:matrics);
    var
       i,j,k,s:integer;
begin 
     for i:=1 to t do
     for j:=1 to t do
         begin
         S:=0;
              for k:=1 to t do
                  s:=s+X[k,i]*Y[j,k];
         Z[i,j]:=s;
          end;
end;
а возведение матрицы в квадрат это умножение матрицы самой на себя, вот!
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 09.03.2009, 13:58   #6
gnom63
Пользователь
 
Регистрация: 08.03.2009
Сообщений: 12
По умолчанию

извените что беспокою а можно мне ещё
эту программу которая даётся в 3 сообщении с помощью процедур переписать)))))))))))))
gnom63 вне форума Ответить с цитированием
Старый 09.03.2009, 14:00   #7
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Конечно можно! Переписывай кто ж против то?
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 09.03.2009, 14:02   #8
gnom63
Пользователь
 
Регистрация: 08.03.2009
Сообщений: 12
Печаль

А КАК????????????
gnom63 вне форума Ответить с цитированием
Старый 09.03.2009, 14:05   #9
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Код:
Program dodelay;
 uses crt;
 Const
  Nmax=10; {Максимальный размер массива}
 Type
  Matrics=array[1..Nmax,1..Nmax] of integer;
  Masiv=array[1..Nmax] of integer;
 Var
  X,Y,Z,A,B:matrics;
  M,N:masiv;
  i,j,t:integer;
{Процедура ввода элементов массива}
{Параметры: t - размер массива, X - массив}
Procedure Vvod (t:integer; Var X:matrics);
    Var
       i,j:integer;
Begin{Vvod}
     For i:=1 to t do
         For j:=1 to t do
             Begin {Ввод элементов}
                  Write ('[',i,',',j,']=');
                  Read (X[i,j]);
             End;  {Ввод элементов}
             For i:=1 to t do
                 Begin {Вывод элементов}
                      For j:=1 to t do
                          Write (X[i,j]:5);
                          Writeln
                 End   {Вывод элементов}
End;{Vvod}
{Процедура вывода элеменов матриц}
{Параметры: X,Y - матрицы, t - размер}
Procedure Echo (t:integer; X:matrics);
    var
       i,j:byte;
begin {Echo}
    For i:=1 to t do
        Begin
             For j:=1 to t do
                 Write (X[i,j]:5);
                 Writeln
        End
end; {Echo}
{Процедура умножения матриц}
{Параметры: X,Y - начальные массивы, Z - массив результат,t - размер}
Procedure Umn (X,Y:matrics; t:integer; Var Z:matrics);
    var
       i,j,k,s:integer;
begin {Umno}
     for i:=1 to t do
     for j:=1 to t do
         begin
         S:=0;
              for k:=1 to t do
                  s:=s+X[k,i]*Y[j,k];
         Z[i,j]:=s;
          end;
end;  {Umno}
{Процедура сложения массивов}
{Параметры: X,Y - начальные массивы, Z - массив результат, t - размер}
Procedure Summa(X,Y:matrics; t:integer; Var Z:matrics);
    var
       i,j:integer;
begin {Summa}
     for i:=1 to t do
         for j:=1 to t do
             Z[i,j]:=X[i,j]+Y[i,j]
end;  {Summa}
{Процедура для нахождения суммы ниже главной диагонали}
{Параметры: X - начальные массивы, Y - массив результат, t - размер}
Procedure Under (X:matrics; t:integer; Var Y:masiv);
  var
     s:real;
    Begin
      S := 0;
      For i := 2 to t do
        For j := 1 to i-1 do
          S:=S + X[i, j];
      WriteLn('Сумма элементов, лежащих ниже главной диагонали=', S:5:1);
    End;
{Процедура для нахождения суммы выше главной диагонали}
{Параметры: X - начальные массивы, Y - массив результат, t - размер}
Procedure Over (X:matrics; t:integer; Var Y:masiv);
  var
     s:real;
    Begin
      S := 0;
      For i := 1 to t-1 do
        For j := i+1 to t do
          S := S + X[i, j];
      WriteLn('Сумма элементов, лежащих выше главной диагонали=', S:5:1);
      ReadLn
    End;
begin{lab_12}
clrscr;
writeln('Введите размеры матриц X,Y:');read(t);
writeln('Введите ',t*t,' элемента для каждой матрицы:');
writeln('Введите матрицу X:');vvod(t,X);
writeln('Введите матрицу Y:');vvod(t,Y);
writeln('Результат возведения матрицы X в квадрат:');
Umn(X,X,t,A);
Echo(t,A);
writeln('Результат возведения матрицы Y в квадрат:');
Umn(Y,Y,t,B);
Echo(t,B);
writeln('Полученный массив после преобразований:');
summa(A,B,t,Z);
Echo(t,Z);
under(Z,t,M);
over(Z,t,N);
end.
вступлю в команду разработчиков ПО на Delphi

Последний раз редактировалось maladoy; 09.03.2009 в 14:05. Причина: исправь чуть чуть и будет твоя прога!!!
maladoy вне форума Ответить с цитированием
Старый 09.03.2009, 14:34   #10
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

maladoy, не могу добавить отзыв Вам за последний код
capta1n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
17 Составить программу, которая печатает таблицу умножения и сложения натуральных чисел в шестнадцатеричн OTLi4HO Общие вопросы C/C++ 1 16.01.2009 13:59
Модуль Graph - Составить программу вывода в верхнюю часть экрана изображения двух "туч". lastbronetrain Паскаль, Turbo Pascal, PascalABC.NET 0 22.12.2008 23:25
Сложение двух матриц Аркадий Помощь студентам 5 26.04.2008 15:22
Сравнение 2-ух квадратных матриц размер 3*3 Artem1987 Помощь студентам 2 23.03.2008 16:16