• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Проверить код. Даны две целочисленные квадратные матрицы A и B

Darik102rus

Ученик
Регистрация
26 Апр 2013
Сообщения
11
Реакции
0
Баллы
0
Проверить код. Даны две целочисленные квадратные матрицы A и B

Даны две целочисленные квадратные матрицы A и B размерности N x N . Получить матрицу C=AxB+BxA
Код:
program p;
const strok = 100; stolbcov = 100;
var
  a,b: array [1..strok,1..stolbcov] of integer;
  c: array [1..strok,1..stolbcov] of integer;
  i,j,n,m: byte;
begin
 write('Введите размерность массива a и b:');
 readln(n,m);
 writeln('Массив a:');
  for i:=1 to n do
 begin
  for j:=1 to m do
  begin
  a[i,j]:=random(180);
  write(a[i,j],' ');
 end;
writeln();
end;
 writeln('Массив b:');
 for i:=1 to n do
 begin
  for j:=1 to m do
  begin
  b[i,j]:=random(180);
  write(b[i,j],' ');
 end;
writeln();
end;
 writeln('Массив c:');
 for i:=1 to n do
 begin
  for j:=1 to m do
  begin
   c[i,j]:=a[i,j]*b[i,j]+b[i,j]*a[i,j];
   write(c[i,j],' ')
  end;
 writeln();
end;
end.
 
Задача решена АБСОЛЮТНО неверно!!! В отличие от сложения, перемножение матриц НЕ сводится к почленному перемножению элементов.
Ладно, попробую изобразить.
 
Ну вот, как-то так:
Код:
const
 n=7;
var
  a,b,c1,c2,c: array [1..n,1..n] of integer;
  i,j,k: byte;
begin
 Randomize;
 writeln('Matrix A:');
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     A[i,j]:=random(20);
     write(a[i,j]:8);
    end;
   writeln;
  end;
 writeln('Matrix B:');
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     b[i,j]:=random(20);
     write(b[i,j]:8);
    end;
   writeln;
  end;
 writeln('Matrix C:');
 for i:=1 to n do
  for j:=1 to n do
   begin
    c1[i,j]:=0;
    c2[i,j]:=0;
   end;
 for i:=1 to n do
  for j:=1 to n do
   for k:=1 to n do
    begin
     c1[i,j]:=c1[i,j]+a[i,k]*b[k,j];
     c2[i,j]:=c2[i,j]+b[i,k]*a[k,j];
    end;
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     c[i,j]:=c1[i,j]+c2[i,j];
     write(c[i,j]:8);
    end;
   writeln;
  end;
 readln
end.
 
Ну вот, как-то так:
Код:
const
 n=7;
var
  a,b,c1,c2,c: array [1..n,1..n] of integer;
  i,j,k: byte;
begin
 Randomize;
 writeln('Matrix A:');
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     A[i,j]:=random(20);
     write(a[i,j]:8);
    end;
   writeln;
  end;
 writeln('Matrix B:');
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     b[i,j]:=random(20);
     write(b[i,j]:8);
    end;
   writeln;
  end;
 writeln('Matrix C:');
 for i:=1 to n do
  for j:=1 to n do
   begin
    c1[i,j]:=0;
    c2[i,j]:=0;
   end;
 for i:=1 to n do
  for j:=1 to n do
   for k:=1 to n do
    begin
     c1[i,j]:=c1[i,j]+a[i,k]*b[k,j];
     c2[i,j]:=c2[i,j]+b[i,k]*a[k,j];
    end;
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     c[i,j]:=c1[i,j]+c2[i,j];
     write(c[i,j]:8);
    end;
   writeln;
  end;
 readln
end.

Можете сделать чтобы N вводить с клавиатуры?
 
Но это же элементарно - const убираешь, в разделе var добавляешь. В программе добавляешь
writeln('Vvedite n');
readln(n);
Ага. Только я предпочитаю после подсказки переноса строки не делать, но добавить пробел, т.е.
write('Vvedite n ');
readln(n);
Так оно красивше! :D
 
Забыл добавить, что n может быть как и byte, так и integer. Byte принимает положительные значения до 255, integer - от минус 32768 до 32768
 
Назад
Сверху