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

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

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

 
 Ответить  Открыть новую тему 
> Вывод матрицы на экран
сообщение
Сообщение #1


Новичок
*

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

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


Делаю перемножение матриц но не пойму как матрицу-произведение вывести на экран. И перемножение правильно-ли?

Код
var
  a, b, c, d, e, f, g, h, i, j, k: integer;
  s: real;
  m1, m2, m3: array [1..50,1..50] of real;

Begin

    Write('Vvedite kolichestvo strok matrici m1 ');
    readln(a);
    Write('Vvedite kolichestvo stolbcov matrici m1 ');
    readln(b);
    randomize;
       for i:=1 to a do
       for j:=1 to b do
    m1[i,j]:=random(5);
    Write('Vvedite kolichestvo strok matrici m2 ');
    readln(c);
    Write('Vvedite kolichestvo stolbcov matrici m2 ');
    readln(d);
       for i:=1 to c do
       for j:=1 to d do
    m2[i,j]:=random(5);

     for i:=1 to a do
      begin
      writeln;
     for j:=1 to b do
      write(m1[i,j]:4:0, ' ');
      writeln;
      end;
      writeln;


      for i:=1 to c do
       begin
       writeln;
      for j:=1 to d do
       write(m2[i,j]:4:0, ' ');
       writeln;
       end;
      writeln;
     
      begin
       s:=0;
       s:=m1[i,k]*m2[k,j];
       m3[i,j]:=s;
      end;


      for i:=1 to e do
       begin
       writeln;
      for j:=1 to f do
       write(m3[i,j]:4:0, ' ');
       writeln;
       end;
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

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

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


Нашел ошибки и немного переделал, но все равно получаемая матрица состоит из нолей, только последнее значение - число.

Код

Uses
 Crt;
var
  a, b, c, d, e, f, g, h, i, j, k: integer;
  s: real;
  m1, m2, m3: array [1..50,1..50] of real;
Begin
    Clrscr;
    Write('Vvesti kolichestvo strok matrici m1 ');
    readln(a);
    Write('Vvesti kolichestvo stolbcov matrici m1 ');
    readln(b);
       for i:=1 to a do
       for j:=1 to b do
       begin
        write('Vvesti m1[',i,',',j,']: ');
        readln(m1[i,j]);
       end;
    Write('Vvesti kolichestvo strok matrici m2 ');
    readln(c);
    Write('Vvesti kolichestvo stolbcov matrici m2 ');
    readln(d);
       for i:=1 to c do
       for j:=1 to d do
       begin
        write('Vvesti m2[',i,',',j,']: ');
        readln(m2[i,j]);
       end;

     for i:=1 to a do
      begin
      writeln;
     for j:=1 to b do
      write(m1[i,j]:4:0, ' ');
      writeln;
      end;
      writeln;


      for i:=1 to c do
       begin
       writeln;
      for j:=1 to d do
       write(m2[i,j]:4:0, ' ');
       writeln;
       end;
      writeln;
      readln;

      begin
       s:=0;
       for k:=1 to 3 do
       s:=s+m1[i,k]*m2[k,j];
       m3[i,j]:=s;
      end;


      for i:=1 to a do
       begin
       writeln;
      for j:=1 to d do
       write(m3[i,j]:4:0, ' ');
       writeln;
       end;
readln;
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


...
*****

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

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


Код

m3[i,k]:=m1[i,k]*m2[i,k];
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


to AlaRic>> перемножение не массивов а матриц.
to Павел>> Вот тут ошибка:
Код

     begin
      s:=0;
      for k:=1 to 3 do
      s:=s+m1[i,k]*m2[k,j];
      m3[i,j]:=s;
     end;

Ты для себя программку пишешь ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


to Lik>> да, для себя.
а где здесь ошибка?
как надо умножать?
Код
begin
     s:=0;
     for k:=1 to 3 do
     s:=s+m1[i,k]*m2[k,j];
     m3[i,j]:=s;
    end;


to AlaRic>> пробовал вставлял эту строку - нижняя строка состоит из чисел, остальное ноли.
Код
m3[i,k]:=m1[i,k]*m2[i,k];
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


Все, разобрался. Только и не хватало перечисления.

Код

      for i:=1 to a do
        for j:=1 to d do
      begin
        s:=0;
        for k:=1 to a do
        s:=s+m1[i,k]*m2[k,j];
        m3[i,j]:=s;
      end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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