Массив: Преобразовать матрицу по правилу: умножить на минимальный элемент этой матрицы. - Pascal

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

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

Помогите пожалуйста написать код по заданию:

Дан двухмерный массив размером M x N. Преобразовать его по правилу - умножить на минимальный элемент этой матрицы. Из первых четырех строк массива сформировать четыре новых вектора. Преобразовать каждый из них по правилу - если у массива есть хотя бы один элемент, принадлежащий отрезку [a,b], то все отрицательные элементы заменить нулями, в противном случае - единицами.

Решение задачи: «Массив: Преобразовать матрицу по правилу: умножить на минимальный элемент этой матрицы.»

textual
Листинг программы
type
    TVector = Array[Byte] Of Integer;
    TArray = Array[Byte] Of TVector;
 
procedure InitArray(var x: TArray; var n, m: Byte);
var
    i, j: Byte;
begin
    repeat
        Write('Input m (>4) = '); ReadLn(n);
    until (n > 3);
    repeat
        Write('Input n (>0) = '); ReadLn(m);
    until (m > 0);
    Randomize();
    for i := 0 to n - 1 do
    begin
        WriteLn;
        for j := 0 to m - 1 do
        begin
            x[i, j] := Random(199) - 99;
            Write(x[i, j]:5);
        end;
    end;
end;
 
procedure ChangeArrayByRule(var x: TArray; const n, m: Byte);
var
    i, j, iMin, jMin: Byte;
    min: Integer;
begin
    iMIn := 0; jMin := 0;
    for i := 0 to n - 1 do
        for j := 0 to m - 1 do
            if (x[i, j] < x[iMin, jMin])
            then
            begin
                iMin := i;
                jMin := j;
            end;
    min := x[iMIn, jMin];
    for i := 0 to n - 1 do
    begin
        WriteLn;
        for j := 0 to m - 1 do
        begin
            x[i, j] := x[i, j] * min;
            Write(x[i,j]:7);
        end;
    end;
end;
 
function CheckIn(const x: TVector; const len: Byte; const a, b: Integer): Boolean;
var
    j: Byte;
    Result: Boolean;
begin
    j := 0;
    repeat
        Result := ((x[j] >= a) And (x[j] <= b));
        Inc(j);
    until ((Result) Or (j >= len));
    CheckIn := Result;
end;
 
procedure GenerateVector(var x: TVector; const m: Byte; const flag: Boolean);
var
    j: Byte;
begin
    WriteLn;
    for j := 0 to m - 1 do
    begin
        if (x[j] < 0)
        then
            x[j] := Ord(flag);
        Write(x[j]:7);
    end;
end;
 
procedure GenerateVectors(var a, b, c, d: TVector; const m: Byte);
var
    x, y: Integer;
begin
    Write('Input a='); ReadLn(x);
    repeat
        Write('Input b (>=', x, ') = ');
        ReadLn(y);
    until (y >= x);
    GenerateVector(a, m, CheckIn(a, m, x, y));
    GenerateVector(b, m, CheckIn(b, m, x, y));
    GenerateVector(c, m, CheckIn(c, m, x, y));
    GenerateVector(d, m, CheckIn(d, m, x, y));
end;
 
var
    orig: TArray;
    a, b, c, d: TVector;
    n, m: Byte;
begin
    InitArray(orig, n, m);
    WriteLn;
    ChangeArrayByRule(orig, n, m);
    WriteLn;
    a := orig[0]; b := orig[1];
    c := orig[2]; d := orig[3];
    GenerateVectors(a, b, c, d, m);
end.

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

  1. В процедуре InitArray создается массив x размером n на m, где n и m - это введенные пользователем значения.
  2. Затем в цикле происходит итерация по элементам массива x.
  3. Для каждого элемента x[i, j] генерируется случайное число от 0 до 198.
  4. Если сгенерированное число меньше текущего значения x[i, j], то оно заменяется на новое значение, которое равно произведению текущего значения x[i, j] и минимального элемента массива x.
  5. После завершения цикла, в переменной min хранится минимальное значение из всех элементов массива x.
  6. Затем происходит итерация по элементам массива x.
  7. Для каждого элемента x[i, j] его значение умножается на значение min.
  8. После завершения цикла, в переменной min хранится минимальное значение из всех элементов массива x.
  9. В функции CheckIn проверяется, удовлетворяет ли текущий элемент массива условию (x[j] >= a) And (x[j] <= b).
  10. Если условие выполняется, то возвращается true, иначе возвращается false.
  11. В процедуре GenerateVector создается новый массив x размером m.
  12. Записывается сообщение Input a= и считывается значение a.
  13. Проверяется, удовлетворяет ли значение a условию (a >= x).
  14. Если условие выполняется, то вызывается процедура GenerateVector с аргументами a, m, CheckIn(a, m, x, y).
  15. Аналогично, вызывается процедура GenerateVector с аргументами b, m, CheckIn(b, m, x, y).
  16. Затем вызывается процедура GenerateVector с аргументами c, m, CheckIn(c, m, x, y).
  17. И, наконец, вызывается процедура GenerateVector с аргументами d, m, CheckIn(d, m, x, y).
  18. В конце программы выводится сообщение Input a= и выводятся значения a, b, c, d.

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


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

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

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