Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 995

Профиль | Сайт | Отправить PM | Цитировать


Цитата dasha131:
Вот готово, замечания будут? »
Будут
Код: Выделить весь код
program ABC;
const NMax = 10;
type Matrix = array [1..NMax, 1..NMax] of Real;  
 
procedure MulMatrix(var M1, M2, M3: Matrix; n: Integer);
var  i, j, k: Integer;
     s: Real;
begin
     for i := 1 to n do
     for j := 1 to n do
     begin
          s := 0;
          for k := 1 to n do
              s := s + M1[i, k]*M2[k, j];
          M3[i, j] := s
     end
 
end;

procedure VvodM(var M1:Matrix; n:integer);
var 
    i,j:integer;
begin
     for i := 1 to n do
     for j := 1 to n do
         Read(M1[i, j]);
end;

procedure VivodM(var M1:Matrix; n:integer);
var 
    i,j:integer;
begin
     for i := 1 to n do
     begin
          for j := 1 to n do
              Write(M1[i, j]:0:6, ' ');
          WriteLn;
     end;
end;


var  a, b, c,d,e: Matrix;
     i, j, n: Integer;
begin
     WriteLn('vvedite poradok matrix');
     Write('n = '); ReadLn(n);
 
     WriteLn('vvedite pervyu');
     VvodM(a, n);
     WriteLn('vvedite vtoryu');
     VvodM(b, n);
     WriteLn('vvedite tretu');
     VvodM(c, n);

     MulMatrix(a, b, d, n);
     MulMatrix(c, d, e, n);
 
     VivodM(e,n);

     ReadLn;
end.
Как вариант, можно кусочек переписать иначе, через функцию:

Код: Выделить весь код
finction MulMatrix(var M1, M2; n: Integer):Matrix;
var  i, j, k: Integer;
     s: Real;
begin
     for i := 1 to n do
     for j := 1 to n do
     begin
          s := 0;
          for k := 1 to n do
              s := s + M1[i, k]*M2[k, j];
          result[i, j] := s
     end
end;
соотв. в основном теле программы будет:

Код: Выделить весь код
d:=MulMatrix(a,b,n);
e:=MulMatrix(c,d,n);
Общие комментарии:
Вообще не стОит путать локальные(внутри процедур и функций) и глобальные(общие для всей программы) переменные.
Поэтому я переименовал в процедурах a, b, c, e и т.д. в более условные и единые M1, M2, M3.
i, j, k счетчики, с ними все ясно.
Массивы a, b, c - основные.
d, e производные от умножения.
Бывшие процедуры 1MulMatrix, 2MulMatrix нигде не вызывались, соотв. заменены на вызываемую MulMatrix с разными передаваемыми ей аргументами.
Конечный Readln; по большому счету не нужен. Он служит для паузы во время отладки. При финальной компиляции программы эту строчку желательно закоментировать.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Последний раз редактировалось lxa85, 04-10-2010 в 12:19. Причина: добавил комментариев.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:02, 04-10-2010 | #12