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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2011, 01:05   #1
Лилея
 
Регистрация: 17.01.2011
Сообщений: 6
По умолчанию программа с процедурами операций над матрицами

Здравствуйте!!!Помогите,пожалуйста найти и исправить ошибку. Программа компилируется, но выводит только результат перестановки матрицы А, хотя действий задано много.
Задание: Составить процедуры перестановки соответствующих элементов столбцов с номерами K и L в квадратной матрице размером n*n. Используя эту процедуру, поменять столбцы 2 и 4 матрицы A(5,5),вычислить матрицу D=А3 +В*А и поменять в ней местами столбцы 1 и 3,где В – квадратная матрица размером 5*5. Элементы матрицы А задать произвольно,а элементы матрицы А задать произвольно,а элементы матрицы В вычислить по формуле b[i,j]=i/j.


Код:
Program kursak;
 Const
  Nmax = 5; {Максимальный размер массива}
 Type
  Matrix = array [1..Nmax, 1..Nmax] of integer;[
 Var
  A, B, C, N, K, M, H: matrix;
  i, j, z: integer;
 {Процедура перестановки столбцов K и L}
 {Параметры: k, l - столбцы, m - матрица}
 Procedure obmen (var m:matrica; k, l: byte);
  Var
   i:byte;
   s:integer;
    begin
      for i:=1 to n do
       begin
        S:=m[i,k];
         m[i,k]:=m[i,l];
         m[i,l]:=s;
        end;
     end

 {Процедура вывода элементов матриц}
 {Параметры: А, В - матрицы, z - размер}
 Procedure Echo (z: integer; A: matrix);
  Var
   i, j:byte;
  Begin {Echo}
   For i: = 1 to z do
    Begin
     For j: = 1 to z do
      Write (A [i,j]:5);
     Writeln;
    End;
  End; {Echo}
 {Процедура умножения матриц}
 {Переменные: A, B - начальные массивы}
 {C - массив результат, z - размер}
 Procedure Umn (A, B: matrix; z: integer; Var C: matrix);
  Var
   i, j, k, s: integer;
  Begin {Umn}
   For i: = 1 to z do
    For j: = 1 to z do
     Begin
      s: = 0;
      For k: = 1 to z do
       s: = s + A [i, k] * B [k, j];
      C [i, j]: =s;
     End;
  End; {Umn}
 {Процедура транспонирования массивов}
 {Переменные: А - начальный массив, В - массив результат}
 Procedure Transpon (A: matrica; z: integer; Var B: matrica);
  Var
   i, j: integer;
  Begin {Transpon}
   For i: = 1 to z do
    For j: = 1 to z do
     B [i, j]: = A [j, i];
  End; {transpon}

 {*** процедура суммирования матриц ***}
 procedure summa (A,B:matrica; n:integer; var S:matrica);
 begin
   for i:=1 to n do
   for j:=1 to n do
   S[i,j]:=a[i,j]+b[i,j];
 end;

Begin {kursak}
    Randomize;
      For i:=1 to n do
      For j:=1 to n do
      A[I,j]:=round(random(10));
       For I:=1 to n do
       begin
       For j:=1 to n do
        Write (A[I,j]:5);
         Writeln;
	 End;
          Obmen (A,2,4);
          Writeln;
            For i:=1 to n do
           Begin
             For j:=1 to n do
              Write(A[I,j]:5);
              Writeln;
             End;
               Readln;				
begin
 read(n,m);
 i:=1;  {счетчик строк}
 j:=1;  {счетчик столбцов}
 while (i<=n) and (j<=m) do
  begin
   B[i,j]:=i/j;
   inc(j);  {увеличиваем счетчик столбцов}
   if (j=m+1) then {если текущий столбец вышел за пределы массива, то}
    begin
     j:=1;  {делаем текущим первый столбец}
     inc(i); {увеличиваем счетчик строки}
    end;
  end;
 for i:=1 to n do
 begin
  for j:=1 to m do
   write(b[i,j]:5); {выводим массив уже по-обычному}
  writeln;
 end;
 readln
end;
   Umn (A,A,n,U1);
     Begin
       For i:=1 to n do
          Begin
            For j:=1 to n do
             Write (U2[I,j]:5);
             Writeln;
           End;
      End;
       Transpon (U2,n,T);
             Begin
       For i:=1 to n do
          Begin
            For j:=1 to n do
             Write (T[I,j]:5);
             Writeln;
           End;
      End;
        Umn (T,B,n,C);
     Begin
       For i:=1 to n do
          Begin
            For j:=1 to n do
             Write (C[I,j]:5);
             Writeln;
           End;
      End;
                    SUmma (U2,C,n,D);
     Begin
       For i:=1 to n do
          Begin
            For j:=1 to n do
             Write (D[I,j]:5);
             Writeln;
           End;
      End;
          
             Obmen (A,2,4);
               Writeln;
               For i:=1 to n do
                 Begin
                   For j:=1 to n do
                    Write(A[I,j]:5);
                    Writeln;
             End;
               Readln;	
  End.

Последний раз редактировалось Stilet; 17.01.2011 в 11:14.
Лилея вне форума Ответить с цитированием
Старый 21.01.2011, 20:15   #2
Лилея
 
Регистрация: 17.01.2011
Сообщений: 6
По умолчанию

Мне уже помогли.Это совершенно неправильный код...
Лилея вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать в виде модуля набор подпрогамм для выполнения следующих операций квадратными матрицами Nomid Общие вопросы C/C++ 3 11.12.2010 15:48
Калькулятор над матрицами Олеся_92 Паскаль, Turbo Pascal, PascalABC.NET 2 16.05.2010 20:54
Графический калькулятор над матрицами Олеся_92 Помощь студентам 2 04.05.2010 18:10
Действия над матрицами. (Delphi) ekzobyte Помощь студентам 1 20.05.2009 20:52
Класс матриц, перегрузка операций с матрицами andros Помощь студентам 1 26.12.2008 19:49