Как исправить ошибку "Несколько подпрограмм могут быть вызваны"? - Pascal ABC

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

задание: превратить заданную матрицу А по правилу: если след матрицы меньше 1, то все строки с четными номерами заменить нулями, а с нечетными-единицям.
    WriteLn;
    Randomize;
    InputSize('n', n); InputSize('m', m);
    for i := 0 to n - 1 do
    begin
        for j := 0 to m - 1 do
        begin
            x[i, j] := Random() * 100 - 50;
            Write(' ', x[i, j]:6:2);
        end;
        WriteLn;
    end;
end;
procedure ProcessArray(var x: TArray; const n, m: Byte);
var
    i, j: Byte;
    trace, temp: Real;
begin
    WriteLn;
    trace := 0;
    for i := 0 to n - 1 do
        trace := trace + x[i, i];
    if (trace < 1)
    then
    begin
        for i := 0 to n - 1 do
        begin
            temp := Ord(Not Odd(i));
            for j := 0 to m - 1 do
            begin
                x[i, j] := temp;
                Write(x[i, j]:2:0);
            end;
            WriteLn;
        end;
    end
    else
        WriteLn('trace >= 1');
end;
var
    a, b: TArray;
    nA, mA, nB, mB: Byte;
begin
    GenerateArray(a, nA, mA); ProcessArray(a, nA, mA);
    GenerateArray(b, nB, mB); ProcessArray(b, nB, mB);
end.
Ошибка: Несколько подпрограмм могут быть вызваны

Код к задаче: «Как исправить ошибку "Несколько подпрограмм могут быть вызваны"? - Pascal ABC»

textual
type
    TArray = Array[Byte, Byte] Of Real;
procedure InputSize(const c: Char; var x: Byte);
begin
    repeat
        Write(c, '=');
        ReadLn(x);
    until (x > 0);
end;
procedure GenerateArray(var x: TArray; var n, m: Byte);
var
    i, j: Byte;
begin
    WriteLn;
    Randomize;
    InputSize('n', n); InputSize('m', m);
    for i := 0 to n - 1 do
    begin
        for j := 0 to m - 1 do
        begin
            x[i, j] := Random() * 100 - 50;
            Write(' ', x[i, j]:6:2);
        end;
        WriteLn;
    end;
end;
procedure ProcessArray(var x: TArray; const n, m: Byte);
var
    i, j: Byte;
    trace, temp: Real;
begin
    WriteLn;
    trace := 0;
    for i := 0 to n - 1 do
        trace := trace + x[i, i];
    if (trace < 1)
    then
    begin
        for i := 0 to n - 1 do
        begin
            temp := Ord(Not Odd(i));
            for j := 0 to m - 1 do
            begin
                x[i, j] := temp;
                Write(x[i, j]:2:0);
            end;
            WriteLn;
        end;
    end
    else
        WriteLn('trace >= 1');
end;
var
    a, b: TArray;
    nA, mA, nB, mB: Byte;
begin
    GenerateArray(a, nA, mA); ProcessArray(a, nA, mA);
    GenerateArray(b, nB, mB); ProcessArray(b, nB, mB);
end.

8   голосов, оценка 4.125 из 5


СОХРАНИТЬ ССЫЛКУ