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

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

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

> сравнение и перемножение матриц, в виде подпрограмм
сообщение
Сообщение #1


Новичок
*

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

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


Есть недоделанная программка, нужно оформить в виде функций или процедур сравнение и перемножение матриц.
Код

program kursovaya;
Uses  crt;
Const amax=50; bmax=50;
Type massiv = array [1..amax,1..bmax] of real;
var
  a1, b1, a2, b2, a3, b3, a4, b4, i, j, k: integer;
  s, l: real;
  m1, m2, m3, m4: massiv;

Procedure input_array (a,b: integer; var mas: massiv);
  var i,j: integer;
  begin
   for i:=1 to a do
    for j:=1 to b do
     begin
      randomize;
       for i:=1 to a do
       for j:=1 to b do
       mas[i,j]:=random(50);
     end;
   end; {input_array}

Procedure out_array (a, b:integer; mas: massiv);
  var i, j: integer;
   begin
    write('Matrica ',a:2); writeln(' X',b:2);
    for i:=1 to a do
     begin
      writeln;
      for j:=1 to b do
       write(mas[i,j]:4:0);
     end;
     writeln;
   end;  {out_array}
Begin
    clrscr;
   Writeln('Vvedite matricu 1');
   Repeat
    Write('Vvedite kolichestvo strok matrici m1 <= '  ,amax:2);
    write(', i = ');
    readln(a1);
    Write('Vvedite kolichestvo stolbcov matrici m1 <= ',bmax:2);
    write(', j = ');
    readln(b1);
   Until (a1<=amax) and (b1<=bmax);
    input_array (a1,b1,m1);
    out_array (a1,b1,m1);
    readln;
     Writeln('Vvedite matricu 2');
   Repeat
    Write('Vvedite kolichestvo strok matrici m2 <= '  ,amax:2);
    write(', i = ');
    readln(a2);
    Write('Vvedite kolichestvo stolbcov matrici m2 <= ',bmax:2);
    write(', j = ');
    readln(b2);
   Until (a2<=amax) and (b2<=bmax);
    input_array (a2,b2,m2);
    out_array (a2,b2,m2);
    readln;
     Writeln('Vvedite matricu 3');
   Repeat
    Write('Vvedite kolichestvo strok matrici m3 <= '  ,amax:2);
    write(', i = ');
    readln(a3);
    Write('Vvedite kolichestvo stolbcov matrici m3 <= ',bmax:2);
    write(', j = ');
    readln(b3);
   Until (a3<=amax) and (b3<=bmax);
    input_array (a3,b3,m3);
    out_array (a3,b3,m3);
    readln;
     Writeln('Vvedite matricu 4');
   Repeat
    Write('Vvedite kolichestvo strok matrici m4 <= '  ,amax:2);
    write(', i = ');
    readln(a4);
    Write('Vvedite kolichestvo stolbcov matrici m4 <= ',bmax:2);
    write(', j = ');
    readln(b4);
   Until (a4<=amax) and (b4<=bmax);
    input_array (a4,b4,m4);
    out_array (a4,b4,m4);
    readln;

      writeln (a1, b1, a2, b2, a3, b3, a4, b4);   {vse [i,j]}

      for i:=1 to a1 do
       for j:=1 to b2 do
      begin
      s:=0;                       {umnogenie matric}
      for k:=1 to a1 do
      s:=s+m1[i,k]*m2[k,j];
      m4[i,j]:=s;
      end;

      for i:=1 to a1 do
       begin
       writeln;
      for j:=1 to b2 do
       write(m4[i,j]:4:0, ' ');
       end;
      writeln;
      writeln;


       begin                
       l:=0;
       for i:=1 to a1 do
       l:=l+m4[i,i];              {summa el-tov na glavnoy diagonali}
       end;
       writeln(l:4:0);
       readln;



readln;
End.


Сообщение отредактировано: мисс_граффити -


Прикрепленные файлы
Прикрепленный файл  KURS2.PAS ( 2.93 килобайт ) Кол-во скачиваний: 275
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов(1 - 1)
сообщение
Сообщение #2


Гость






Умножение:
Код

Procedure MMul(Const m1,m2:massiv;WidthOfm1,HeightOfm2:Integer;Var Res:massiv);
Var
 i,j,k:Integer;
 s:Real;
Begin
 For i:=1 To WidthOfm1 Do
   For j:=1 To HeightOfm2 Do
   Begin
     s:=0;
     For k:=1 To WidthOfm1 Do
       s:=s+m1[i,k]*m2[k,j];
     Res[i,j]:=s;
     end;
End;

Function MCmp(Const m1,m2:massiv;Width,Height:Integer):Boolean;
Var
 i,j:Integer;
Begin
 MCmp:=False;
 For i:=1 To Width Do
   For j:=1 To Height Do
     If m1[i,j]<>m2[i,j] Then
       Exit;
 MCmp:=True
End;


Вроде бы и всё...
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 19.04.2024 22:01
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name