Заменить максимальный элемент каждой строки матрицы нулем - Pascal

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

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

Дан двумерный массив размером n*m, заполненный случайным образом. 1. Заменить максимальный элемент каждой строки нулем 2. Вставить перед всеми строками, первый элемент которых делится на 3, строку из нулей. 3. Удалить самый левый столбец, в котором встретиться четный отрицательный элемент. 4. Поменять местами второй и предпоследний столбцы.

Решение задачи: «Заменить максимальный элемент каждой строки матрицы нулем»

textual
Листинг программы
var
    ar: Array[Byte, Byte] Of ShortInt;
    i, j, k, n, m, jMax: Byte;
    temp: ShortInt;
    flag: Boolean;
begin
    repeat
        Write('n(1..128)=');
        ReadLn(n);
    until (n in [1..128]);
    repeat
        Write('m=');
        ReadLn(m);
    until (m > 0);
    Randomize; WriteLn('Original array:');
    for i := 0 to n - 1 do
    begin
        jMax := 0;
        for j := 0 to m - 1 do
        begin
            ar[i, j] := Random(199) - 99;
            Write(ar[i, j]:4);
            if (ar[i, j] > ar[i, jMax])
            then
                jMax := j;
        end;
        ar[i, jMax] := 0;
        WriteLn;
    end;
    WriteLn('Task 1:');
    for i := 0 to n - 1 do
    begin
        for j := 0 to m - 1 do
            Write(ar[i, j]:4);
        WriteLn;
    end;
    i := 0;
    while (i < n) do
    begin
        if (ar[i, 0] mod 3 = 0)
        then
        begin
            for k := n downto i + 1 do
                for j := 0 to m - 1 do
                    ar[k, j] := ar[k - 1, j];
            Inc(n);
            for j := 0 to m - 1 do
                ar[i, j] := 0;
            Inc(i);
        end;
        Inc(i);
    end;
    WriteLn('Task 2:');
    for i := 0 to n - 1 do
    begin
        for j := 0 to m - 1 do
            Write(ar[i, j]:4);
        WriteLn;
    end;
    j := 0; flag := False;
    while ((j < m) And (Not flag)) do
    begin
        i := 0;
        while ((i < n) And (Not flag)) do
        begin
            flag := (ar[i, j] < 0) And (Not Odd(ar[i, j]));
            Inc(i);
        end;
        Inc(j);
    end;
    if flag
    then
    begin
        for k := j - 1 to m - 2 do
            for i := 0 to n - 1 do
                ar[i, k] := ar[i, k + 1];
        Dec(m);
    end;
    WriteLn('Task 3:');
    for i := 0 to n - 1 do
    begin
        for j := 0 to m - 1 do
            Write(ar[i, j]:4);
        WriteLn;
    end;
    if (m > 1)
    then
        for i := 0 to n - 1 do
        begin
            temp := ar[i, 1];
            ar[i, 1] := ar[i, m - 2];
            ar[i, m - 2] := temp;
        end;
    WriteLn('Task 4:');
    for i := 0 to n - 1 do
    begin
        for j := 0 to m - 1 do
            Write(ar[i, j]:4);
        WriteLn;
    end;
end.

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

  1. Объявление переменных:
    • ar: двумерный массив байтов, используется для хранения данных;
    • i, j, k, n, m, jMax: переменные для итерации и хранения чисел;
    • temp: переменная для временного хранения значения элемента массива;
    • flag: логическая переменная для проверки условий.
  2. Ввод размеров массива:
    • Цикл повторяется, пока пользователь не введет корректное значение для n (количество строк) от 1 до 128;
    • Цикл повторяется, пока пользователь не введет корректное значение для m (количество столбцов), большее 0.
  3. Заполнение массива случайными числами и замена максимального элемента в каждой строке на 0:
    • Заполнение массива ar случайными числами от -99 до 99;
    • Определение максимального элемента в каждой строке и замена его на 0.
  4. Вывод исходного массива.
  5. Задача 1:
    • Вывод измененного массива после замены максимальных элементов на 0.
  6. Задача 2:
    • Перемещение строк с числами, делящимися на 3 без остатка, вниз и вставка нулей вверху;
    • Вывод измененного массива.
  7. Задача 3:
    • Удаление столбцов, содержащих отрицательные и четные числа;
    • Вывод измененного массива.
  8. Задача 4:
    • Поменять местами значения второго и предпоследнего столбца в каждой строке;
    • Вывод конечного массива.

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


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

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

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