Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет.docx
Скачиваний:
99
Добавлен:
13.03.2016
Размер:
852.36 Кб
Скачать

Задача 2.5.3.

Условие

Разработать алгоритм и программу нисходящим способом, предполагая заданной матрицу А 5 на 5 или одномерные массивы указанной длины.

Найти среднее арифметическое элементов матрицы A, и, если матрица A не содержит ни одного отрицательного элемента, изменить элементы матрицы путем вычитания из них среднего арифметического.

Листинг

program project1;

uses

things;

function CreateMatrix(rows, columns: integer): TMatrix;

var

i, k: integer;

M: TMatrix;

begin

SetLength(M, rows);

for i:=Low(M) to High(M) do

begin

SetLength(M[i], columns);

for k:=Low(M[i]) to High(M[i]) do

M[i][k] := Random(100);

end;

Result := M;

end;

function GetAverageValue(Matrix: TMatrix): integer; //Функция для нахожения срежнего арифметического

var

i, k, n, summ: integer;

begin

n := 0;

summ := 0;

for i:=Low(Matrix) to High(Matrix) do

for k:=Low(Matrix[i]) to High(Matrix[i]) do

begin

summ += Matrix[i][k];

Inc(n);

end;

Result := summ div n;

end;

function HasNegativeElements(Matrix: TMatrix): boolean; //Проверяет матрицу на наличие отрицательных элементов

var

i, k: integer;

begin

for i:=Low(Matrix) to High(Matrix) do

for k:=Low(Matrix[i]) to High(Matrix[i]) do

if Matrix[i][k] < 0 then

begin

Result := True;

Exit;

end;

Result := False;

end;

operator - (const a: TMatrix; const b: integer): TMatrix; overload;//Перегружаем оператор вычитания

var

i, k: integer;

M: TMatrix;

begin

M := a;

for i:=Low(a) to High(a) do

for k:=Low(a) to High(a) do

M[i][k] -= b;

Result := a;

end;

var

Matrix: TMatrix;

Avg: integer;

begin

randomize;

Matrix := CreateMatrix(5, 5);

writeln('Исходная матрица:');

PrintMatrix(Matrix);

Avg := GetAverageValue(Matrix);

writeln('Среднее арифметическое элементов матрицы: ', Avg);

if nowriteln('Матрица после вычитания среднего арифметического их всех её элементов:');

PrintMatrix(Matrix);

end

else

writeln('Матрица содержит отрицательные элементы.');

readln();

end.t HasNegativeElements(Matrix) then

begin

writeln('Матрица не содержит отрицательных элементов.');

Matrix := Matrix - Avg;

writeln('Матрица после вычитания среднего арифметического их всех её элементов:');

PrintMatrix(Matrix);

end

else

writeln('Матрица содержит отрицательные элементы.');

Результаты работы программы

Переменные

Класс

Имя

Тип

Структура

Назначение

Блок-схема

Задача 4.3.3.

Условие

Разработать программу, выделив процедуры.

Листинг

program project1;

uses

things;

procedure FillMatrix(out M: TMatrix);

var

i, k: integer;

begin

SetLength(M, 15);

for i:=Low(M) to High(M) do

begin

SetLength(M[i], 15);

end;

for i:=Low(M) to High(M) do

begin

k:=0;

while k <= i do

begin

M[i, k] := Random(100);

M[k, i] := M[i, k];

Inc(k);

end;

end;

end;

function HasSymmetry(const M: TMatrix): boolean;

var

i, k: integer;

begin

for i:=Low(M) to High(M) do

begin

k := 0;

while k < i do

begin

if M[i, k] <> M[k, i] then

begin

writeln('Матрица не симметрична относительно главной диагонали.');

Result := False;

exit; //Покидаем функцию

end;

Inc(k);

end;

end;

writeln('Матрица симметрична относительно главной диагонали.');

Result := true;

end;

procedure ZeroUpperElements(M: TMatrix);

var

i, k: integer;

begin

for i:=Low(M) to High(M) do

begin

k := High(M[i]);

while k > i do

begin

M[i, k] := 0;

Dec(k);

end;

end;

end;

function SummLowerElements(const M:TMatrix): integer;

var

i, k, Summ: integer;

begin

Summ := 0;

for i:=Low(M) to High(M) do

begin

k := Low(M[i]);

while k < i do

begin

Summ += M[i, k];

Inc(k);

end;

end;

Result := Summ;

end;

var

Matr: TMatrix;

begin

FillMatrix(Matr);

writeln('Исходная матрица:');

PrintMatrix(Matr);

if HasSymmetry(Matr) then

begin

ZeroUpperElements(Matr);

writeln('Матрица после обнуления элементов, лежащих выше диагонали:');

PrintMatrix(Matr);

writeln('Сумма элементов, лежащих ниже диагонали: ', SummLowerElements(Matr));

end;

readln();

end.

Результаты работы программы

Переменные

Класс

Имя

Тип

Структура

Назначение

Блок-схема