Отсортировать положительные элементы ниже побочной диагонали матрицы по возрастанию - Pascal

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

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

Помогите зделать задачку:Дана матрица N*m.Отсортировать положительные элементы ниже побочной диагонали по возрастанию,а отрицательные элементы выше побочной диагонали по возрастаниюНайти наибольший элемент выше побочной диагонали с указанием его индекса

Решение задачи: «Отсортировать положительные элементы ниже побочной диагонали матрицы по возрастанию»

textual
Листинг программы
var
    a: Array[Byte, Byte] Of ShortInt;
    temp: Array[Byte] Of ShortInt;
    i, j, k, n, iMax, jMax, nTemp: Byte;
    swap: ShortInt;
begin
    {ввод размерности}
    repeat
        Write('Input n(>1): ');
        ReadLn(n);
    until (n > 1);
    Randomize; WriteLn;
    {заполнение и поиск максимума}
    iMax := 0; jMax := 0;
    for i := 0 to n - 1 do
    begin
        for j := 0 to n - 1 do
        begin
            a[i, j] := Random(199) - 99;
            Write(a[i, j]:4);
            if ((j + i + 1 < n) And (a[i, j] > a[iMax, jMax]))
            then
            begin
                iMax := i;
                jMax := j;
            end;
        end;
        WriteLn;
    end;
    WriteLn('Max[', iMax + 1, '][', jMax + 1, ']=', a[iMax, jMax]);
    {сортировка ниже побочной диагонали}
    nTemp := 0;
    for i := 1 to n - 1 do
        for j := n - i to n - 1 do
            if (a[i, j] > 0)
            then
            begin
                temp[nTemp] := a[i, j];
                Inc(nTemp);
            end;
    if (nTemp > 1)
    then
    begin
        for i := 0 to nTemp - 2 do
            for j := 0 to nTemp - i - 2 do
                if (temp[j] > temp[j + 1])
                then
                begin
                    swap := temp[j];
                    temp[j] := temp[j + 1];
                    temp[j + 1] := swap;
                end;
        k := 0; i := 1;
        while ((i < n) And (k < nTemp)) do
        begin
            j := n - i;
            while ((j < n) And (k < nTemp)) do
            begin
                if (a[i, j] > 0)
                then
                begin
                    a[i, j] := temp[k];
                    Inc(k);
                end;
                Inc(j);
            end;
            Inc(i);
        end;
    end;
    {сортировка выше побочной диагонали}
    nTemp := 0;
    for i := 0 to n - 2 do
        for j := 0 to n - i - 2 do
            if (a[i, j] < 0)
            then
            begin
                temp[nTemp] := a[i, j];
                Inc(nTemp);
            end;
    if (nTemp > 1)
    then
    begin
        for i := 0 to nTemp - 2 do
            for j := 0 to nTemp - i - 2 do
                if (temp[j] > temp[j + 1])
                then
                begin
                    swap := temp[j];
                    temp[j] := temp[j + 1];
                    temp[j + 1] := swap;
                end;
        k := 0; i := 0;
        while ((i < n - 1) And (k < nTemp)) do
        begin
            j := 0;
            while ((j < n - i - 1) And (k < nTemp)) do
            begin
                if (a[i, j] < 0)
                then
                begin
                    a[i, j] := temp[k];
                    Inc(k);
                end;
                Inc(j);
            end;
            Inc(i);
        end;
    end;
    {вывод итоговый}
    for i := 0 to n - 1 do
    begin
        for j := 0 to n - 1 do
            Write(a[i, j]:4);
        WriteLn;
    end;
end.

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

  1. Объявление переменных:
    • a: двумерный массив размерности Byte, хранящий числа типа ShortInt
    • temp: одномерный массив размерности Byte, хранящий числа типа ShortInt
    • i, j, k, n, iMax, jMax, nTemp: переменные типа Byte
    • swap: переменная типа ShortInt
  2. Ввод размерности:
    • Пользователю предлагается ввести число n (количество строк и столбцов матрицы) до тех пор, пока введенное значение n больше 1.
  3. Заполнение матрицы и поиск максимума:
    • Генерируется случайное значение для каждого элемента матрицы и выводится на экран.
    • Выполняется поиск максимального значения в матрице и его индексов с учетом условия ниже побочной диагонали.
  4. Сортировка положительных элементов ниже побочной диагонали по возрастанию:
    • Положительные элементы ниже побочной диагонали копируются в массив temp и сортируются по возрастанию.
    • Отсортированные элементы из temp заменяют соответствующие элементы в матрице a.
  5. Сортировка отрицательных элементов выше побочной диагонали по убыванию:
    • Отрицательные элементы выше побочной диагонали копируются в массив temp и сортируются по убыванию.
    • Отсортированные элементы из temp заменяют соответствующие элементы в матрице a.
  6. Вывод итоговой матрицы:
    • Отсортированная матрица выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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