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

Алгоритмы

Рисунок 3.3

Лабораторная работа №7

Создание и использование модуля

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

Интерфейс программы

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

Рисунок 4.1

Рисунок 4.2

Код программы

Исходный код модуля программы:

unit Matrix;

interface

uses SysUtils, Math;

Type Tmas1 = array of extended; // одномерный массив

Type Tmas2 = array of array of extended; // двумерный массив

function MidArray ( Masr : Tmas1) : extended; // среднее арифметическое положительных элементов массива

function DiagSum ( Mas2: Tmas2) : extended; // сумма элементов главной диагонали матрицы

procedure GenMatr1(NElem: byte; var Mas: Tmas1); // заполнение массива

procedure GenMatr2(CElem: byte;RElem: byte; var Mas2: Tmas2); // заполнение матрицы

implementation

//10 variant

procedure GenMatr1(NElem: byte; var Mas: Tmas1); // заполнение массива

var col: integer;

begin

randomize;

SetLength(mas,NElem);

for col:= 0 to nelem-1 do

begin

Mas[col]:=(Random(20)-Random(20));

end;

end;

function MidArray ( Masr : Tmas1) : extended; // среднее арифметическое положительных элементов массива

var mid,sym: extended;

col,n: integer;

begin

n:=0;

sym:=0;

for col:=0 to length(masr)-1 do

if masr[col]>0 then

begin

sym:= sym + masr[col];

n:=n+1;

end;

if sym=0 then mid:=0 else

mid:= sym/n;

midarray:= mid;

end;

//2 variant

procedure GenMatr2(CElem: byte;RElem: byte; var Mas2: Tmas2); // заполнение матрицы

var col, row: integer;

begin

randomize;

SetLength(mas2,RElem,CElem);

for col:= 0 to Celem-1 do

for row:= 0 to RElem-1 do

begin

Mas2[row,col]:=(Random(20)-Random(20));

end;

end;

function DiagSum ( Mas2: Tmas2) : extended; // Сумма элементов главной диагонали матрицы

var col, row: integer;

begin

result:=0;

if length(Mas2[0])>length(Mas2) then

for col := 0 to Length(mas2[0]) do

result:=result+mas2[col,col]

else

for row := 0 to Length(mas2)-1 do

result:=result+mas2[row,row];

DiagSum:=result;

end;

end.

Исходный код программы:

procedure TForm1.Button1Click(Sender: TObject);

var

col: integer;

begin

SG1.RowCount:=0;

SG1.ColCount:= SE1.Value;

GenMatr1(SE1.Value, mas);

for col := 0 to SE1.Value -1 do

SG1.Cells[col,0]:= FloatToStr(mas[col]);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Label1.Caption:= 'Среднее арифметическое положительных эл-тов массива: ' + FloatToStr(MidArray(Mas));

end;

procedure TForm1.Button3Click(Sender: TObject);

var

col, row: integer;

begin

SG2.RowCount:=SE2.Value;

SG2.ColCount:=SE3.Value;

GenMatr2(SE3.Value,SE2.Value, mas2);

for col := 0 to SE3.Value - 1 do

for row := 0 to SE2.Value - 1 do

SG2.Cells[col,row]:= FloatToStr(mas2[row,col]);

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

Label4.Caption:= 'Сумма элементов главной диагонали матрицы: ' + FloatToStr(DiagSum(mas2));

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]