Вычислить сумму элементов матрицы, расположенных над главной диагональю - Pascal (80942)
Формулировка задачи:
Вычислить сумму элементов матрицы, расположенных над главной диагональю. Размер матрицы вводится с клавиатуры. Элементы матрицы размещаются в памяти динамически.
Решение задачи: «Вычислить сумму элементов матрицы, расположенных над главной диагональю»
textual
Листинг программы
program Project1;
const
MaxI = 20; //Наибольший индекс.
type
TArr = array[1..MaxI, 1..MaxI] of Integer;
var
PArr : ^TArr;
i, j, Sum, M : Integer;
S : String;
begin
repeat
Write('Задайте размер массива: ');
Readln(M);
if not (M in [1..MaxI]) then begin
Writeln('Размер массива задан неверно. Действие отменено.');
Writeln('Повторить - Enter. Выход - любой символ + Enter.');
Readln(S);
Continue;
end;
//Выделение памяти для массива.
GetMem(PArr, M * M * SizeOf(Integer));
//Заполние массива случайными числами и распечатка.
Writeln('Исходный массив:');
Randomize;
for i := 1 to M do begin
for j := 1 to M do begin
PArr^[i, j] := Random(10); //0..9.
if j > 1 then Write(', ');
Write(PArr^[i, j]);
end;
Writeln;
end;
//Решение задачи. Для элементов, расположенных над главной диагональю,
//выполняется условие: i < j.
Sum := 0;
for i := 1 to M do
for j := i + 1 to M do Sum := Sum + PArr^[i, j];
//Освобождаем память, взятую для массива.
FreeMem(PArr);
//Ответ.
Writeln('Сумма элементов, расположенных над главной диагональю: ', Sum);
Writeln('Повторить - Enter. Выход - любой символ + Enter.');
Readln(S);
until S <> '';
end.
Объяснение кода листинга программы
- Задаем максимальный индекс (MaxI) и тип данных (TArr), который представляет собой двумерный массив целых чисел.
- Объявляем переменные: PArr (указатель на массив), i, j, Sum (переменная для хранения суммы), M (переменная для хранения размера массива) и S (строка для ввода с клавиатуры).
- В цикле повторяем, пока не будет введен корректный размер массива. Если размер задан неверно, выводим сообщение об ошибке и прерываем выполнение программы.
- Выделяем память под массив с помощью функции GetMem.
- Заполняем массив случайными числами и выводим его на экран.
- Формируем условие для суммы элементов, расположенных над главной диагональю: i < j.
- Складываем элементы массива, удовлетворяющие условию, и сохраняем результат в переменной Sum.
- Освобождаем память, выделенную под массив.
- Выводим на экран сумму элементов, расположенных над главной диагональю.
- Повторяем цикл до тех пор, пока пользователь не решит завершить программу или не введет некорректный символ для выхода из цикла.