profile
Опубликовано 5 лет назад по предмету Информатика от ComazoGT

Создайте собственную библиотеку в Pascal с тремя подпрограммами

  1. Ответ
    Ответ дан Аккаунт удален
    1. Создаем файл MatInt.pas следующего содержания:

    // PascalABC.NET 3.1, сборка 1230 от 27.04.2016
    unit MatInt;

    interface

    type
      Matrix=array[,] of integer;

    function MatCreate(m,n:integer):Matrix;
    procedure MatPrint(a:Matrix;w:integer);
    procedure MatMax(a:Matrix;var x,imax,jmax:integer);

    implementation

    function MatCreate(m,n:integer):Matrix;
    // создает матрицу и инициализирует её нулями
    begin
      SetLength(Result,m,n);
    end;

    procedure MatPrint(a:Matrix;w:integer);
    // выводит матрицу, отводя w позиций под элемент
    begin
      var n:=Length(a,1)-1;
      for var i:=0 to Length(a,0)-1 do begin
        for var j:=0 to n do Write(a[i,j]:w);
        Writeln
        end
    end;

    procedure MatMax(a:Matrix;var x,imax,jmax:integer);
    // возвращает значение максимального элемента и его координаты
    begin
      imax:=0; jmax:=0;
      var n:=Length(a,1)-1;
      for var i:=0 to Length(a,0)-1 do
        for var j:=0 to n do
          if a[i,j]>a[imax,jmax] then (imax,jmax):=(i,j);
      Inc(imax); Inc(jmax); x:=a[imax-1,jmax-1]
    end;

    end.

    2. Компилируем файл, получая библиотеку MatInt.pcu

    3. Пишем основную программу:

    // PascalABC.NET 3.1, сборка 1230 от 27.04.2016
    uses
      MatInt;
    begin
      var a:=MatCreate(5,8);
      var n:=Length(a,1)-1;
      for var i:=0 to Length(a,0)-1 do
      for var j:=0 to n do a[i,j]:=Random(-50,50);
      MatPrint(a,4);
      var irow,jcol,max:integer;
      MatMax(a,max,irow,jcol);
      Writeln('Максимальный А[',irow,',',jcol,']=',max)
    end.

    Тестовое решение
      11 -16  11  16  23  -4 -17 -34
     -12  -5  20   9  16  47  43  17
     -46 -26  47 -40  12 -31 -25  13
      -7  39 -20  26  11 -19  32 -15
      45 -10 -28  31 -46 -29 -29 -22
    Максимальный А[2,6]=47
Самые новые вопросы