Процедура не работает, ошибок не выдает, а в результате пишет всегда 0 - PascalABC.NET
Формулировка задачи:
Процедура не работает, ошибок не выдает, а в результате пишет всегда 0. Что не так. Помогите, пожалуйста!
Решение задачи: «Процедура не работает, ошибок не выдает, а в результате пишет всегда 0»
textual
Листинг программы
type
matr=array [1..10,1..10] of integer;
var
A:matr;
i,j,n:integer;
S:real;
procedure SGD(x:matr; var sum:real);
var
i: integer;
begin
Sum:=0;
for i:=1 to n do
Sum:=Sum+x[i,i];
end;
begin
write ('Введите количество строк/столбцов квадратной матрицы - ');
readln (n);
randomize;
for i:=1 to N do
for j:=1 to N do
A[i,j]:= random(100);
for i:=1 to n do
begin
for j:=1 to n do
write (' ',A[i,j]:5);
writeln;
end;
writeln;
SGD(A, S);
writeln('Cумма: ',s:8:3);
readln;
end.
Объяснение кода листинга программы
- Объявление переменных:
- A - двумерный массив (матрица) целых чисел размером 10x10;
- i, j - индексы для обхода матрицы;
- n - количество строк/столбцов квадратной матрицы;
- S - сумма.
- Объявление процедуры SGD:
- Принимает двумерный массив x и ссылку на переменную sum в качестве параметров;
- Вычисляет сумму элементов главной диагонали матрицы x и сохраняет результат в переменной sum.
- Главный цикл программы:
- Запрос на ввод количества строк/столбцов квадратной матрицы;
- Инициализация генератора случайных чисел;
- Заполнение матрицы A случайными целыми числами от 0 до 99;
- Вывод содержимого матрицы A на экран;
- Вызов процедуры SGD для вычисления суммы главной диагонали матрицы A;
- Вывод значения переменной S на экран;
- Ожидание нажатия клавиши для завершения программы.
- В процедуре SGD:
- Инициализация переменной Sum значением 0;
- Обход главной диагонали матрицы x и суммирование ее элементов;
- Возврат полученного значения суммы.