Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 25.12.2011, 13:40   #1 (permalink)
lina93
Новичок
 
Регистрация: 25.12.2011
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задача на матрицы

Помогите, пожалуйста, написать программу в Pascal с процедурой
Миниатюры
neaiedhiaaiea0001.jpg  
lina93 вне форума   Ответить с цитированием

Старый 25.12.2011, 13:40
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Скорее всего в одном из уже созданных постов аналогичная проблема уже решена

Задачи на матрицы
Матрицы
Симметричность матрицы
Задача об элементах матрицы
Задача об элементах матрицы
Задача на заполнение, транспонирование и вывод матрицы

Старый 25.12.2011, 14:51   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от lina93 Посмотреть сообщение
Помогите, пожалуйста, написать программу в Pascal с процедурой
Пожалуйста:
Код:
TYPE
 Matrix=Array[1..100,1..100] of Real;
VAR
 A,B,C:Matrix;
 MA,MB,MC,NA,NB,NC:Byte;
 i,j,k:Byte;
 Flag:Boolean;
 Sum:Real;

Procedure Prod(m1,m2:Matrix; Mm1,Nm1,Mm2,Nm2:Byte;
               var m3:Matrix; var Mm3:Byte; var Nm3:Byte; var Pb:boolean);
Var
 q,p,r:Byte;
begin
 If Nm1=Mm2 then Pb:=true else Pb:=false;
 If Pb then
  begin
   For q:=1 to Mm1 do
    For p:=1 to Nm2 do
     begin
      m3[q,p]:=0;
      For r:=1 to Nm1 do
       m3[q,p]:=m3[q,p]+m1[q,r]*m2[r,p];
     end;
   Mm3:=Mm1;
   Nm3:=Nm2;
  end;
end;

BEGIN
 Write('Number of rows of matrix A = ');
 Readln(MA);
 Write('Number of columns of matrix A = ');
 Readln(NA);
 For i:=1 to MA do
  For j:=1 to NA do
   begin
    Write('A[',i,',',j,']= ');
    Readln(A[i,j]);
   end;
 Writeln;

 Write('Number of rows of matrix B = ');
 Readln(MB);
 Write('Number of columns of matrix B = ');
 Readln(NB);
 For i:=1 to MB do
  For j:=1 to NB do
   begin
    Write('B[',i,',',j,']= ');
    Readln(B[i,j]);
   end;
 Writeln;

 Prod(A,B,MA,NA,MB,NB,C,MC,NC,Flag);

 If Flag then
  begin
   Writeln('Matrix A:');
   For i:=1 to MA do
    begin
     For j:=1 to NA do
      write(A[i,j]:8:1);
     Writeln;
    end;
   Writeln;
   Writeln('Matrix B:');
   For i:=1 to MB do
    begin
     For j:=1 to NB do
      write(B[i,j]:8:1);
     Writeln;
    end;
   Writeln;
   Writeln('Matrix C:');
   For i:=1 to MC do
    begin
     For j:=1 to NC do
      write(C[i,j]:8:2);
     Writeln;
    end;
   Writeln;
   Sum:=0;
   For i:=1 to MC do
    For j:=1 to NC do
     If C[i,j]<0 then Sum:=Sum+C[i,j];
   Writeln('Sum of C negatives is ',Sum:0:2);
  end
  else
  Writeln('The number of columns of A is NOT equal to the number of rows of B!!!');
 Readln;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 25.12.2011, 15:39   #3 (permalink)
lina93
Новичок
 
Регистрация: 25.12.2011
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое!
Но что выполняет эта процедура, что-то очень не понятно
lina93 вне форума   Ответить с цитированием
Старый 25.12.2011, 17:41   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от lina93 Посмотреть сообщение
Спасибо большое!
Но что выполняет эта процедура, что-то очень не понятно
Дык... Матрицы перемножает. Там вводятся сами матрицы (m1 и m2), число строк матрицы m1 (Mm1), число ее столбцов (Nm1), то же для матрицы m2 - Mm2 и Nm2, выводится матрица-произведение - m3, число ее строк (Mm3) и столбцов (Nm3), а также булевский флажок, показывающий, соблюдено ли необходимое условие самой возможности перемножения матриц, каковое состоит в том, что число столбцов первой матрицы должно быть равно числу строк второй. Кстати, из этого следует, что в Вашей задаче первая матрица-вектор должна быть именно строкой, а ни в коем случае не столбцом.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 08:50.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.