Автор работы: Пользователь скрыл имя, 23 Июля 2014 в 18:43, курсовая работа
Delphi— императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.
Введение
История Delphi ……………………………………………… 2
Постановка задачи ………………………………………….. 5
Блок-схема
Основного алгоритма……………………………………….. 6
Подпрограмм ………………………………………………... 7
Листинг программы …………………………………………….. 10
Описание ………………………………………………………… 22
Заключение ……………………………………………………… 24
Список использованной литературы ………………………….. 25
// col - количество столбцов массива m2d
// возвращает введенный массив m2d[0..row-1][0..col-1]
// true - если массив успешно сформирован
function TForm1.vvodmas(Var m2d: t2dArray; row: Integer; col: Integer):Boolean;
var
i, j: Integer; // индексы массива
r:Real;
begin
result:=False;
SetLength(m2d, row); // задаем количествл строк массива
// задаем количество столбцов для каждой строки
for i := 0 to row - 1 do
SetLength(m2d[i], col);
for i := 0 to row - 1 do
begin
for j := 0 to col - 1 do
begin
try
//преобразуем строку в вещественное значение
r:=StrToFloat(strgrd_mn.Cells[
except
//если
значение строки нельзя
on E : Exception do
begin
ShowMessage('Ошибка в ячейке m='+IntToStr(i+1)+', n='+IntToStr(j+1)+#$0d+#$0a+E.
//завершаем работу подпрограммы
Exit;
end;
end;
//присваиваем элементу массива значение
m2d[i, j]:=r;
end;
end;
result:=True;
end;
procedure TForm1.btn_nClick(Sender: TObject);
begin
vvod_n(StrToInt(edt_n.Text));
end;
// функция нахождения
пересечения двух множеств и
формирования одномерного
// m2d - двумерный массив с результатами эксперимента [0..row-1][0..col-1]
// row - количество строк массива m2d
// col - количество столбцов массива m2d
// возвращает полученный одномерный массив m1d и его длину
function TForm1.peresech(m2d: t2dArray; row: Integer; col: Integer;
var m1d: t1dArray): Integer;
var
i, j, k, p: Integer; // индексы массива
len: Integer; // количество элементов массива m1d
next: Boolean; // переход к следующему элементу
begin
len := 0;
// первая половина строк матрицы - первое множество
for i := 0 to (row div 2) - 1 do
begin
for j := 0 to col - 1 do
begin
next := False;
// вторая половина строк матрицы - второе множество
for k := (row div 2) to row - 1 do
begin
for p := 0 to col - 1 do
begin
// каждый элемент первого
// с каждым из элементов второго множества
if m2d[i, j] = m2d[k, p] then
begin
SetLength(m1d, len + 1); // увеличиваем длину массива m1d на 1
m1d[len] := m2d[i, j]; // сохраним элемент массива m2d в массиве m1d
len := len + 1; // увеличим на 1 количество элементов массива m1d
next := True; // переходим к следующему элементу
Break; // выходим из цикла for p:=0 to col-1 do
end;
end;
if next then
Break; // выходим из цикла for k:=(row div 2) to row-1 do
end;
end;
end;
result := len; // возвращаем длину полученного одномерного массива
end;
// функция расчета среднего
арифметического значения
// m1d - одномерный массив [0..len-1]
// len - длина массива m1d
// возвращает среднее
арифметическое значение
function TForm1.srednee(m1d: t1dArray; len: Integer): Real;
var
sum: Real; // сумма элементов массива
i: Integer; // индекс массива
begin
sum := 0;
// находим сумму элементов массива
for i := 0 to len - 1 do
sum := sum + m1d[i];
// находим и возвращаем
среднее арифметическое
result := sum / len;
end;
// функция формирования
откорректированного
// m1d - одномерный массив [0..len-1]
// len - длина массива m1d
// sr - среднее арифметическое значение элементов массива m1d;
// возвращает откорректированный одномерный массив m1d1 и его длину
function TForm1.correct(m1d: t1dArray; len: Integer; sr: Real;
var m1d1: t1dArray): Integer;
var
i: Integer; // индекс массива
len1: Integer; // количество элементов откоректированного массива
begin
len1 := 0;
for i := 0 to len - 1 do
begin
// если элемент
отличается от среднего
// более чем на 50%, то не включаем его в откорректированный
// одномерный массив
if not(((m1d[i] / sr) > 1.5)) then
if not ((m1d[i] / sr) < 0.5) then begin
SetLength(m1d1, len1 + 1); // увеличиваем длину массива m1d1 на 1
m1d1[len1] := m1d[i]; // сохраним элемент массива m1d в массиве m1d1
len1 := len1 + 1; // увеличим на 1 количество элементов массива m1d1
end;
end;
result := len1; // возвращаем количество элементов массива m1d1
end;
// процедура вывода одномерного массива
// m1d - одномерный массив [0..len-1]
// len - длина массива m1d
procedure TForm1.vyvodmas(m1d: t1dArray; len: Integer);
var
i: Integer; // индекс массива
begin
//зададим количество столбцов
strgrd_y.ColCount:=len;
//подпишем столбцы
for i := 0 to len - 1 do strgrd_y.Cells[i,0]:=IntToStr(
//заполним таблицу значениями одномерного массива
for i := 0 to len - 1 do strgrd_y.Cells[i,1]:=
end;
procedure TForm1.btnRaschetClick(Sender: TObject);
begin
// формируем двумерный массив c данными эксперимента
if (vvodmas(A, m, n)) then
begin
// нахождения пересечения двух множеств и формирования одномерного массива
xlen := peresech(A, m, n, X);
// находим среднее арифметическое значене элементов массива X
xsr := srednee(X, xlen);
// формируем откорректированный одномерный массив
ylen := correct(X, xlen, xsr, Y);
// находим среднее арифметическое значене элементов массива Y
ysr := srednee(Y, ylen);
// вывод результатов
// Размер полученного одномерного массива
edt_xlen.Text:=IntToStr(xlen);
// Среднее арифметическое значение элементов массива
edt_xsr.Text:=FloatToStr(xsr);
// Количество удаленных элементов массива
edt_del.Text:=IntToStr(xlen-
// Размер откорректированного массива
edt_ylen.Text:=IntToStr(ylen);
// Среднее арифметическое
значение элементов
edt_ysr.Text:=FloatToStr(ysr);
// Элементы откорректированного массива
vyvodmas(Y, ylen);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
vvod_n(3);
end;
end.
4.Описание программы
Запускаем программу. В открывшемся окне (Рисунок 1.1) вводим нужный размер массива, с которым будем работать. Нажимаем «Изменить». Записываем нужные нам цифры (Рисунок 1.2). Нажимаем «Рассчитать». В edt_xlen заносится размер полученного одномерного массива. После чего мы находим среднее арифметическое значение элементов массива и записываем это число в edt_xsr. Следующим действием мы узнаю количество удаленных элементов массива, и полученный результат заносим в edt_del. Из выполнимых действий мы формируем новый откорректированный массив и заносим полученные числа в стрингрид, и находим среднее арифметическое значение элементов этого массива.
Рисунок 1.1
Рисунок 1.2
Рисунок 1.3
5. Заключение
Целью данной курсовой работы является написание работоспособной программы по заданным условиям. Ознакомился и чётко усвоил основы алгоритмизации и особенности написания объектно-ориентированных программ по сравнению с консольными приложениями.
Полученные знания станут существенным подспорьем в дальнейшей работе.