Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 27.04.2013, 06:50   #1 (permalink)
Darik102rus
Новичок
 
Регистрация: 26.04.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Проверить код. Даны две целочисленные квадратные матрицы 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.
Darik102rus вне форума   Ответить с цитированием

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

Советую вам прочесть аналогичные темы, наверняка вы найдете там что то важное

Даны три положительных вещественных числа x, y, z
Даны целые числа K и L
Найти площадь выпуклого многоугольника, если даны координаты вершин многоугольника
Даны два массива по 15 элементов
Матрицы С++
Матрицы в С++

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

Задача решена АБСОЛЮТНО неверно!!! В отличие от сложения, перемножение матриц НЕ сводится к почленному перемножению элементов.
Ладно, попробую изобразить.
Vladimir_S вне форума   Ответить с цитированием
Старый 27.04.2013, 21:36   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вот, как-то так:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 28.04.2013, 14:19   #4 (permalink)
Darik102rus
Новичок
 
Регистрация: 26.04.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Ну вот, как-то так:
Код:
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 вводить с клавиатуры?
Darik102rus вне форума   Ответить с цитированием
Старый 28.04.2013, 15:46   #5 (permalink)
Daniellos
Хозяин Медной Горы
 
Аватар для Daniellos
 
Регистрация: 01.08.2011
Адрес: Армавир
Сообщений: 12,159
Записей в дневнике: 8
Сказал(а) спасибо: 751
Поблагодарили 88 раз(а) в 27 сообщениях
Репутация: 57416
По умолчанию

Цитата:
Сообщение от Darik102rus Посмотреть сообщение
Можете сделать чтобы N вводить с клавиатуры?
Но это же элементарно - const убираешь, в разделе var добавляешь. В программе добавляешь

Код:
writeln('Vvedite n');
readln(n);
Daniellos вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 28.04.2013, 15:47   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Darik102rus Посмотреть сообщение
Можете сделать чтобы N вводить с клавиатуры?
Могу. А Вы?
Vladimir_S вне форума   Ответить с цитированием
Старый 28.04.2013, 15:50   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Daniellos Посмотреть сообщение
Но это же элементарно - const убираешь, в разделе var добавляешь. В программе добавляешь
writeln('Vvedite n');
readln(n);
Ага. Только я предпочитаю после подсказки переноса строки не делать, но добавить пробел, т.е.
write('Vvedite n ');
readln(n);
Так оно красивше!
Vladimir_S вне форума   Ответить с цитированием
Старый 28.04.2013, 16:09   #8 (permalink)
Daniellos
Хозяин Медной Горы
 
Аватар для Daniellos
 
Регистрация: 01.08.2011
Адрес: Армавир
Сообщений: 12,159
Записей в дневнике: 8
Сказал(а) спасибо: 751
Поблагодарили 88 раз(а) в 27 сообщениях
Репутация: 57416
По умолчанию

Забыл добавить, что n может быть как и byte, так и integer. Byte принимает положительные значения до 255, integer - от минус 32768 до 32768
Daniellos вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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