Как исправить ошибку "Несколько подпрограмм могут быть вызваны"? - Pascal ABC
Формулировка задачи:
задание: превратить заданную матрицу А по правилу: если след матрицы меньше 1, то все строки с четными номерами заменить нулями, а с нечетными-единицям.
Ошибка:
Несколько подпрограмм могут быть вызваны
Решение задачи: «Как исправить ошибку "Несколько подпрограмм могут быть вызваны"?»
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.
Объяснение кода листинга программы
- В начале кода объявлены необходимые переменные и типы данных.
- В процедуре
InputSize
считывается размер массива от пользователя. - В процедуре
GenerateArray
генерируется случайное значение для каждого элемента массива. - В процедуре
ProcessArray
вычисляется сумма элементов диагонали массива и проверяется, равна ли она единице. Если нет, то происходит перегенерация массива. - В конце кода объявлены два массива
a
иb
, и выполнены вызовы процедурGenerateArray
иProcessArray
для каждого из них.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д