Построить новую матрицу, которая не содержит строку с минимальным элементом - Pascal

Узнай цену своей работы

Формулировка задачи:

Написать программу поиска номера строки и столбца максимального и минимального элемента заданной матрицы. Построить новую матрицу, которая не содержит строку с минимальным элементом и столбец с максимальным элементом исходной матрицы.

Решение задачи: «Построить новую матрицу, которая не содержит строку с минимальным элементом»

textual
Листинг программы
type
    TMass = Array Of Array Of ShortInt;
 
procedure PrintMass(const ar : TMass);
var
    i, j : Byte;
begin
    for i := 0 to Length(ar) - 1 do
    begin
        for j := 0 to Length(ar[i]) - 1 do
            Write(ar[i, j]:4);
        WriteLn;
    end;
    WriteLn;
end;
 
function GenMass(const ar : TMass; const x, y : Byte) : TMass;
var
    i, j, k, l : Byte;
    Result : TMass;
begin
    k := 0;
    SetLength(Result, Length(ar) - 1, Length(ar[0]) - 1);
    for i := 0 to Length(ar) - 1 do
    begin
        if (i <> x)
        then
        begin
            l := 0;
            for j := 0 to Length(ar[i]) - 1 do
                if (j <> y)
                then
                begin
                    Result[k, l] := ar[i, j];
                    Inc(l);
                end;
            Inc(k);
        end;
    end;
    GenMass := Result;
end;
 
procedure FindID(const ar : TMass; var x, y : Byte; const state : Boolean);
var
    i, j : Byte;
    temp : ShortInt;
begin
    x := 0; y := 0; temp := ar[0, 0];
    temp := ar[0, 0];
    for i := 0 to Length(ar) - 1 do
        for j := 0 to Length(ar[i]) - 1 do
            if ((state And (ar[i, j] < temp)) Or (Not state And (ar[i, j] > temp)))
            then
            begin
                x := i;
                y := j;
                temp := ar[i, j];
            end;
end;
 
procedure InitMass(var ar : TMass);
var
    i, j, n, m : Byte;
begin
    repeat
        Write('Input n: ');
        ReadLn(n);
    until (n > 0);
    repeat
        Write('Input m: ');
        ReadLn(m);
    until (m > 0);
    SetLength(ar, n, m);
    for i := 0 to n - 1 do
        for j := 0 to m - 1 do
            ar[i, j] := Random(199) - 99;
    PrintMass(ar);
end;
 
var
    arr, arr2 : TMass;
    x1, x2, y1, y2 : Byte;
begin
    Randomize;
    InitMass(arr);
    FindID(arr, x1, y1, true); FindID(arr, x2, y2, false);
    arr2 := GenMass(arr, x1, y2); PrintMass(arr2);
end.

Объяснение кода листинга программы

В этом коде используется язык программирования Pascal. Вот список описаний переменных и процедур в коде:

  1. TMass - это тип, который представляет собой массив массивов целых чисел короткого типа.
  2. arr, arr2 - это переменные типа TMass, которые используются для хранения и манипулирования матрицами.
  3. x1, x2, y1, y2 - это переменные типа Byte, которые используются для поиска строк с минимальным элементом в матрице.
  4. state - это логическое значение, используемое в процедуре FindID для определения критериев поиска.
  5. n, m - это переменные типа Byte, которые используются для ввода размеров матрицы в процедуре InitMass.
  6. i, j, k, l - это переменные типа Byte, которые используются в качестве счетчиков в различных циклах в процедурах GenMass и FindID.
  7. temp - это временная переменная типа ShortInt, которая используется для сравнения элементов матрицы в процедуре FindID.
  8. Random(199) - это функция, которая генерирует случайное число в диапазоне от 0 до 198 и используется для инициализации элементов матрицы в процедуре InitMass. Вот краткое описание каждой процедуры:
  9. PrintMass - процедура для печати содержимого матрицы arr.
  10. GenMass - функция для создания новой матрицы, исключая строку с минимальным элементом.
  11. FindID - процедура для поиска строк с минимальным элементом в матрице.
  12. InitMass - процедура для инициализации матрицы и ввода ее размеров. В основной части программы сначала инициализируется матрица arr, затем находятся строки с минимальным элементом в матрице arr, и, наконец, создается новая матрица arr2, которая не содержит строку с минимальным элементом, и выводится на экран.

Оцени полезность:

10   голосов , оценка 4.6 из 5
Похожие ответы