Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2016, 12:48   #1
Avirov
Новичок
Джуниор
 
Регистрация: 15.05.2016
Сообщений: 3
По умолчанию Исправьте код программы: квадратные матрицы A, B и C порядка n. Получить матрицу (A+B)*C

Даны квадратные матрицы A, B и C порядка n.
Получить матрицу (A+B)*C

Код:
program Project704;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
    Tmatr=array[1..10,1..10] of Real;
var
  I,J,N,K:Integer;
  A,B,C:TMatr;
  S:Real;

   procedure MultMatr(X,Y:TMatr);
   var
   J,I:Integer;
   Z:TMatr;
   begin
     for I:=1 to n do
     begin
       for J:=1 to n do
       begin
         Z[I,J]:=X[I,J]+Y[I,J];
         Writeln(Z[I,J]:0:0);
       end;
      end;
   end;

   procedure SumMatr(M,P:Tmatr);
   var
   I,J,K:Integer;
   F:TMatr;
   begin
     for I:=1 to N do
     for J:=1 to N do
     begin
       S:=0;
       for K:=1 to N do
       S:=S+M[I,K]*P[K,J];
       F[I,J]:=S;
       Writeln(F[I,J]:0:2);
     end;
    end;
begin
  Writeln('Porydok matr N:');
  Read(N);
  Writeln('Vvod matr A');
  For I:= 1 to N do
  begin
   For J:=1 to  N do
   begin
   Readln(A[I,J]);
   end;
  end;
  Writeln('Vvod matr B');
  For I:= 1 to N do
  begin
   For J:=1 to  N do
   begin
   ReadLN(B[I,J]);
   end;
  end;
  MultMatr(A,B);
  Readln;
  end.

 begin
  Writeln('Vvod matr C');
  For i:= 1 to N do
  begin
   For j:=1 to  N do
   begin
   ReadLN(C[I,J]);
   end;
   end;
   SumMatr(MultMatr,C);
   Readln;
   end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 15.05.2016 в 13:25.
Avirov вне форума Ответить с цитированием
Старый 16.05.2016, 12:46   #2
Avirov
Новичок
Джуниор
 
Регистрация: 15.05.2016
Сообщений: 3
По умолчанию Исправьте код программы

Даны квадратные матрицы A, B и C порядка n.
Получить матрицу (A+B)*C
\\
Код:

program Project704;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
    Tmatr=array[1..10,1..10] of Real;
var
  I,J,N,K:Integer;
  A,B,C:TMatr;
  S:Real;

   procedure MultMatr(X,Y:TMatr);
   var
   J,I:Integer;
   Z:TMatr;
   begin
     for I:=1 to n do
     begin
       for J:=1 to n do
       begin
         Z[I,J]:=X[I,J]+Y[I,J];
         Writeln(Z[I,J]:0:0);
       end;
      end;
   end;

   procedure SumMatr(M,P:Tmatr);
   var
   I,J,K:Integer;
   F:TMatr;
   begin
     for I:=1 to N do
     for J:=1 to N do
     begin
       S:=0;
       for K:=1 to N do
       S:=S+M[I,K]*P[K,J];
       F[I,J]:=S;
       Writeln(F[I,J]:0:2);
     end;
    end;
begin
  Writeln('Porydok matr N:');
  Read(N);
  Writeln('Vvod matr A');
  For I:= 1 to N do
  begin
   For J:=1 to  N do
   begin
   Readln(A[I,J]);
   end;
  end;
  Writeln('Vvod matr B');
  For I:= 1 to N do
  begin
   For J:=1 to  N do
   begin
   ReadLN(B[I,J]);
   end;
  end;
  MultMatr(A,B);
  Readln;
  end.

 begin
  Writeln('Vvod matr C');
  For i:= 1 to N do
  begin
   For j:=1 to  N do
   begin
   ReadLN(C[I,J]);
   end;
   end;
   SumMatr(MultMatr,B);
   Readln;
   end.
Avirov вне форума Ответить с цитированием
Старый 16.05.2016, 14:11   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ваша главная ошибка в том, что Вы матрицы, которые вычисляете, просто выводите на экран и нигде не сохраняете!
В данном случае у Вас ничего так не получится. возвращайте результат вычислений из ваших процедур.
И сделайте отдельно процедуру вывода матрицы.
Да и для ввода процедура не помешает!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2016, 09:54   #4
krGorka
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 35
По умолчанию

названия процедур перепутаны
Код:
procedure MultMatr(X,Y:TMatr);   
   var
   J,I:Integer;
   Z:TMatr;
   begin
     for I:=1 to n do
     begin
       for J:=1 to n do
       begin
         Z[I,J]:=X[I,J]+Y[I,J];
         Writeln(Z[I,J]:0:0);
       end;
      end;
   end;
это суммирование

А это умножение
Код:
   procedure SumMatr(M,P:Tmatr);
   var
   I,J,K:Integer;
   F:TMatr;
   begin
     for I:=1 to N do
     for J:=1 to N do
     begin
       S:=0;
       for K:=1 to N do
       S:=S+M[I,K]*P[K,J];
       F[I,J]:=S;
       Writeln(F[I,J]:0:2);
     end;
    end;

Последний раз редактировалось Аватар; 17.05.2016 в 09:57.
krGorka вне форума Ответить с цитированием
Старый 17.05.2016, 19:53   #5
Avirov
Новичок
Джуниор
 
Регистрация: 15.05.2016
Сообщений: 3
По умолчанию

Как будто я не знал что там суммирование и умножение

Мне надо передать значение одной процедуры в другую,вот что я хочу!
Avirov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal работа с файлами: В текстовом файле хранятся квадратные целочисленные матрицы порядка n. Olga92 Паскаль, Turbo Pascal, PascalABC.NET 10 26.01.2014 10:52
даны три квадратные матрицы третьего порядка.вывести на экран ту из них,норма которой наименьшая. в качестве нормы матрицы взять м ayoka Паскаль, Turbo Pascal, PascalABC.NET 0 16.05.2012 18:28
Получить новую матрицу умножением элементов каждого столбца исходной матрицы на наименьший по модулю элемент Neat Microsoft Office Excel 4 28.06.2011 00:56
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу: Хутор Паскаль, Turbo Pascal, PascalABC.NET 2 20.01.2011 19:59
Получить матрицу B[1..N-1,1..M-1] из матрицы A[1..N,1..M] удалением какой-либо х-той строки и k-го столбц kempers Помощь студентам 2 18.12.2008 10:53