Процедура не работает, ошибок не выдает, а в результате пишет всегда 0 - PascalABC.NET
Формулировка задачи:
Процедура не работает, ошибок не выдает, а в результате пишет всегда 0. Что не так. Помогите, пожалуйста!
Листинг программы
- type matr=array [1..10,1..10] of integer;
- var A:matr;
- i,j,n:integer;
- S:real;
- procedure SGD(x:matr; var z:real);
- var i, n: integer; Sum:real;
- begin
- Sum:=0;
- for i:=1 to n do
- Sum:=Sum+A[i,i];
- Writeln (Sum)
- end;
- begin
- write ('введите количество строк/столбцов квадратной матрицы - ');
- read (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], ' ');
- writeln
- end;
- writeln;
- SGD(A, S)
- end.
Решение задачи: «Процедура не работает, ошибок не выдает, а в результате пишет всегда 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 и суммирование ее элементов;
- Возврат полученного значения суммы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д