Программа
Program Matrixer;
{ Кососимметризация и
транспонирование матрицы,
подсчет суммы отрицательных
элементов над главной диагональю }
Const N=5; { Размерность матрицы }
Type MatrixType=array[1..N,1..N] of Shortint; { Описание типа "матрица" }
Var Matrix:MatrixType; { Описание переменной "матрица" }
Procedure MatrixReader(var Matrix:MatrixType); { Процедура ввода матрицы }
var Line,Column:1..N; { Счетчики строк и столбцов }
Begin
for Line:=1 to N do { Цикл ввода строк }
for Column:=1 to N do { Цикл ввода элементов }
begin
Write('Введите элемент [',Line,',',Column,'] ');
{ Вывод приглашения ввести элемент матрицы }
ReadLn(Matrix[Line,Column]) { Чтение элемента матрицы }
end
End;
Procedure MatrixWriter(Matrix:MatrixType); { Процедура вывода матрицы }
var Line,Column:1..N; { Счетчики строк и столбцов }
Begin
for Line:=1 to N do { Цикл вывода строк }
begin
for Column:=1 to N do { Цикл вывода элементов }
Write(Matrix[Line,Column]:5); { Вывод элемента матрицы }
WriteLn; { Пропуск строки }
end
End;
Procedure Kososimmetrizator(var Matrix:MatrixType);
{ Процедура преобразования матрицы в кососимметрическую }
var Line,Column:1..N; { Счетчики строк и столбцов }
Begin
for Line:=1 to N do Matrix[Line,Line]:=0; { Обнуление главной диагонали }
for Line:=1 to N do { Цикл обработки строк }
for Column:=Line to N do { Цикл обработки элементов }
Matrix[Line,Column]:=-Matrix[Column,Line]
{ Копирование элемента через диагональ с инверсиеей знака }
End;
Procedure Transponator(var Matrix:MatrixType);
{ Преобразование матрицы в транспонированную }
var Line,Column:1..N; { Счетчики строк и столбцов }
Buf:Shortint; { Буфер для переноса элементов матрицы }
Begin
for Line:=1 to N do { Цикл перебора строк }
for Column:=Line to N do { Просмотр строки правее диагонали }
begin
{ Обмен элементов симметрично главной диагонали }
Buf:=Matrix[Line,Column]; { Запоминание текущего элемента }
Matrix[Line,Column]:=Matrix[Column,Line];
{ Копирование в текущую ячейку элемента из противоположной ячейки }
Matrix[Column,Line]:=Buf
{ Копирование в противоположную ячейку элемента из буфера }
end
End;
Function GetSumNegativeElements(Matrix:MatrixType):Integer;
{ Функция вычисления суммы отрицательных элементов над главной диагональю }
var Line,Column:1..N; { Счетчики строк и столбцов }
Sum:Integer;{ Буфер для подсчета суммы отрицательных элементов матрицы }
Begin
Sum:=0; { Обнуление буфера }
for Line:=1 to N do { Цикл просмотра строк }
for Column:=Line to N do
{ Цикл просмотра строки правее главной диагонали }
if Matrix[Line,Column]<0 { Если элемент отрицательный, }
then Sum:=Sum+Matrix[Line,Column]; { то набор суммы }
GetSumNegativeElements:=Sum { Определение значения функции }
End;
BEGIN
WriteLn;WriteLn; { Пропуск строк }
MatrixReader(Matrix); { Ввод матрицы }
WriteLn; { Пропуск строки }
WriteLn('Исходная матрица'); { Вывод заголовка над матрицой }
MatrixWriter(Matrix); { Вывод матрицы }
WriteLn; { Пропуск строки }
Kososimmetrizator(Matrix); { Создание кососимметрической матрицы }
WriteLn('Кососимметрическая матрица'); { Вывод заголовка над матрицой }
MatrixWriter(Matrix); { Вывод матрицы }
WriteLn; { Пропуск строки }
WriteLn('Транспонированная матрица'); { Вывод заголовка над матрицой }
Transponator(Matrix); { Транспонирование матрицы }
MatrixWriter(Matrix); { Вывод матрицы }
WriteLn; { Пропуск строки }
WriteLn('Сумма отрицательных элементов над главной диагональю ',
GetSumNegativeElements(Matrix));
{ Подсчет и вывод суммы отрицательных элементов }
WriteLn; { Пропуск строки }
WriteLn('Нажмите [Enter]'); { Вывод приглашения нажать [Enter] }
ReadLn; { Остановка программы до нажатия [Enter] }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию