Смекни!
smekni.com

Обработка матриц (стр. 5 из 5)

В поле Expression (Выражение) вводится вычисляемое выражение. По щелчку на кнопке Evaluate (Вычислить) в поле Result (Результат) появится его значение. Это поле (панель) сделано таким большим, потому что в нем отображаются не только отдельные значения, но и массивы, и записи. В поле New value (Новое значение ) выводится измененное значение. С помощью кнопки Watch (Следить) выражение, указанное в поле Expression (Выражение) , можно добавить в окно слежения.


ВЫВОДЫ

В процессе выполнения курсовой работы были выполнено:

- на первом этапе работы было проанализировано задание и определен перечень вопросов, которые были решены в данной работе, определение того, что, собственно, будет выполнять разрабатываемая программа, не рассматривая конкретную реализацию этих функций;

- разработка алгоритма разрабатываемой программы;

- разработка программы и пользовательского интерфейса;

- произведена отладка программы.


ПЕРЕЧЕНЬ ССЫЛОК

1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 1988.

2. Довгаль С.И., Литвинов Б.Ю., Сбитнев А..И. Персональные ЭВМ : Турбо Паскаль V7.0, объектное программирование, локальные сети. – Киев: Информсиситема сервис, 1993.

3. Епанешников А.М., Епанешникова В.А. Программирование в среде TurboPascal 7.0.-М.: Диалог –МИФИ,1999.

4. Зуев Е.А. Программирование на языке TurboPascal 6.0,7.0. – М.: Радио и связь, Веста,1993.

5. Кандзюба С.П., Громов В.Н. Delphi7.Базы данных и приложения. Лекции и упражнения. – К.: Издательство "ДиаСофт", 2001.

6. Климова Л.М. Pascal 7.0. Практическое программирование. Решение типовых задач. –М.:КУДИУ ОБРАЗ, 2000.

7. Марченко А. И., Марченко Л.А.. Программирование в среде TurboPascal7.0.-К.: Век+,1999.

8. ФароновВ.В. Turbo Pascal 7.0. Начальный курс. - М.: Нолидж, 2000.

9. Методические указания к выполнению курсовой работы по дисциплине "Программирование" /Сост.: Н.С. Семенова, С.А. Сафонова – Северодонецк: Изд-во СТИ ВНУ, 2006. - 37с.


ПРИЛОЖЕНИЯ

Приложение А

Схема алгоритма программы


Приложение А (продолжение)


Приложение А (продолжение)


Приложение Б

Листинг программы

unitUnit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids;

type

TForm1 = class(TForm)

gbRazmer: TGroupBox;

lbN: TLabel;

lbM: TLabel;

edN: TEdit;

edM: TEdit;

buRazmer: TButton;

gbMatrix1: TGroupBox;

sgMatrix1: TStringGrid;

buRandom: TButton;

gbMatr2: TGroupBox;

sgMatrix2: TStringGrid;

buPerest: TButton;

gbOsob: TGroupBox;

buOsob: TButton;

lbOsob1: TLabel;

lbOsob2: TLabel;

buZapoln: TButton;

sgMatrix3: TStringGrid;

procedure FormCreate(Sender: TObject);

procedure buRazmerClick(Sender: TObject);

procedure buRandomClick(Sender: TObject);

procedure buPerestClick(Sender: TObject);

procedure buOsobClick(Sender: TObject);

procedure buZapolnClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

n,m : integer;

matr1, matr2, matr3: array [1..20, 1..20] of integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Randomize; // включить генератор случайных чисел

end;

procedure TForm1.buRazmerClick(Sender: TObject);

var i: integer;

begin

// установить размер матрицы

n:= StrToInt(edN.Text);

m:= StrToInt(edM.Text);

// визуальное отображение

sgMatrix1.RowCount:= n+1;

sgMatrix1.ColCount:= m+1;

for i:= 1 to n do

sgMatrix1.Cells[0, i]:= IntToStr(i);

for i:= 1 to m do

sgMatrix1.Cells[i, 0]:= IntToStr(i);

sgMatrix2.RowCount:= n+1;

sgMatrix2.ColCount:= m+1;

for i:= 1 to n do

sgMatrix2.Cells[0, i]:= IntToStr(i);

for i:= 1 to m do

sgMatrix2.Cells[i, 0]:= IntToStr(i);

sgMatrix3.RowCount:= n+1;

sgMatrix3.ColCount:= m+1;

for i:= 1 to n do

sgMatrix3.Cells[0, i]:= IntToStr(i);

for i:= 1 to m do

sgMatrix3.Cells[i, 0]:= IntToStr(i);

end;

procedure TForm1.buRandomClick(Sender: TObject);

var i, j: integer;

begin

for i:= 1 to n do

for j:= 1 to m do

begin

matr1[i, j]:= random(11);

sgMatrix1.Cells[j, i]:= IntToStr(matr1[i, j]);

end;

end;

procedure TForm1.buZapolnClick(Sender: TObject);

var i, j: integer;

begin

for i:= 1 to n do

for j:= 1 to m do

begin

matr1[i, j]:= StrToInt(sgMatrix1.Cells[j, i]);

end;

end;

procedure TForm1.buPerestClick(Sender: TObject);

var i, j, k: integer;

begin

// формирование переставленной матрицы

forj:= 1 to (mdiv 2) do

for i:= 1 to n do

begin

matr2[i, j]:= matr1[i, m-j+1];

matr2[i, m-j+1]:= matr1[i, j];

end;

// проверка если стобцов нечетное число, то средний столбец остается без изменений

if (m mod 2)<>0 then

for i:= 1 to n do

matr2[i, m div 2+1]:= matr1[i, m div 2+1];

// отображение переставленной матрицы

fori:= 1 tondo

for j:= 1 to m do

begin

sgMatrix2.Cells[j, i]:= IntToStr(matr2[i, j]);

end;

end;

procedure TForm1.buOsobClick(Sender: TObject);

var

i, j, l, osob1, osob2, k: integer;

fLev, fPrav: boolean;

begin

// подсчетособыхв 1 матрице

osob1:= 0;

for i:= 1 to n do

for j:= 2 to m-1 do

begin

k:= matr1[i, j];

// сравнение слева от текущего элемента (если он не первый)

begin

fLev:= true;

for l:= 1 to j-1 do

if matr1[i, l]>=k then fLev:= false;

end;

// сравнение справа от текущего элемента (если он не последний)

fPrav:= true;

for l:= j+1 to m do

if matr1[i, l]<=k then fPrav:= false;

if fLev and fPrav then osob1:= osob1+1;

end;

lbOsob1.Caption:= 'Число "особых" элементоввматрице1 = '+ IntToStr(osob1);

// подсчет особых вo 2 матрице

osob2:= 0;

for i:= 1 to n do

for j:= 2 to m-1 do

begin

k:= matr2[i, j];

// сравнение слева от текущего элемента (если он не первый)

begin

fLev:= true;

for l:= 1 to j-1 do

if matr2[i, l]>=k then fLev:= false;

end;

// сравнение справа от текущего элемента (если он не последний)

fPrav:= true;

for l:= j+1 to m do

if matr2[i, l]<=k then fPrav:= false;

if fLev and fPrav then osob2:= osob2+1;

end;

lbOsob2.Caption:= 'Число "особых" элементоввматрице2 = '+ IntToStr(osob2);

// формирование отсортированной матрицы

if osob1>= osob1 then

matr3:= matr1

else

matr3:= matr2;

for i:= 1 to n do

for j:= m downto 2 do

for l:= 1 to m-1 do

if matr3[i, l] < matr3[i, l+1] then

begin

k:=matr3[i, l] ;

matr3[i, l]:=matr3[i, l+1];

matr3[i, l+1]:=k;

end;

// отображение переставленной матрицы

fori:= 1 tondo

for j:= 1 to m do

begin

sgMatrix3.Cells[j, i]:= IntToStr(matr3[i, j]);

end;

end;

end.