Смекни!
smekni.com

Разработка приложения для Windows, представляющего собой выполнение операции над матрицами (стр. 2 из 2)

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Grids, Menus;

type

TForm1 = class(TForm)

Label1: TLabel;

StringGrid1: TStringGrid;

Edit1: TEdit;

Label2: TLabel;

Label3: TLabel;

Button1: TButton;

Label4: TLabel;

Label6: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

procedure Label3Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Label6Click (Sender: TObject);

procedure N1Click (Sender: TObject);

procedure N2Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

k, s, c, i, j, n:integer;

x:array [0.. 10,0..10] of integer;

implementation

uses Unit2;

{$R *.dfm}

procedureTForm1. Label3Click (Sender: TObject);

begin

if edit1. Text='' then showmessage ('введитеразмерматрицы') else

randomize;

n:=strtoint (edit1. Text);

stringgrid1. Visible:=true;

n:=n-1;

StringGrid1. Height:=StringGrid1. DefaultRowHeight* (strtoint (edit1.text)+1);

StringGrid1. Width:=StringGrid1. DefaultColWidth* (strtoint (edit1.text)+1);

StringGrid1. ColCount:=strtoint (edit1.text);

StringGrid1. RowCount:=strtoint (edit1.text);

for i:=0 to n do

for j:=0 to n do

begin

x [i, j]:=random(5)+1;

end;

for i:=0 to n do

for j:=0 to n do

begin

stringgrid1. Cells [j, i]:=inttostr (x[i, j]);

end;

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

stringgrid1. Visible:=false;

end;

procedureTForm1. Button1Click (Sender: TObject);

begin

s:=0;

for i:=0 to n do

s:= s+x [i, i];

c:=0;

for j:=n downto 0 do

c:= c+x [n-j, j];

for i:=0 to n do

begin

x [i, n+1]:=0;

for j:=0 to n do

x [i, n+1]:=x [i, n+1]+x [i, j];

end;

for i:=0 to n do

begin

x [n+1, i]:=0;

for j:=0 to n do

x [n+1, i]:=x [n+1, i]+x [j, i];

end;

k:=0;

if c=s then begin

for i:=0 to n do

if (c=x [n+1, i]) and (c=x [i, n+1]) then k:=k+1; end;

if k=n+1 then label4.caption:='Данная матрица является магичесим квадратом'

else label4.caption:='Эта матрица не является магическим квадратом';

end;

// показать матрицу

procedure TForm1. Label6Click (Sender: TObject);

begin

randomize;

n:=strtoint (edit1. Text); // количество строк или столбцов

stringgrid1. Visible:=true; // видимость

n:=n-1;

// настройка размера StringGrid

StringGrid1. Height:=StringGrid1. DefaultRowHeight* (strtoint (edit1.text)+1);

StringGrid1. Width:=StringGrid1. DefaultColWidth* (strtoint (edit1.text)+1);

StringGrid1. ColCount:=strtoint (edit1.text);

StringGrid1. RowCount:=strtoint (edit1.text);

for i:=0 to n do

for j:=0 to n do

begin

x [i, j]:=random(1)+1; // контрольная матрица

end;

for i:=0 to n do

for j:=0 to n do

begin

stringgrid1. Cells [j, i]:=inttostr (x[i, j]);

end;

end;

procedure TForm1.N1Click (Sender: TObject);

begin

form2.show;

end;

procedure TForm1.N2Click (Sender: TObject);

begin

close;

end;

end.

// код для 2 – формы

unit Unit2;

interface

uses

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

Dialogs, StdCtrls;

type

TForm2 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

private

{Private declarations}

public

{Public declarations}

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

end.

2.4 Описание программы

Программа предназначена для выполнения операции над матрицей. Программа написана на языке ObjectPascal. Работает в среде операционных систем Widows 2000/XP. Для полноценной работы данной программы необходимы следующие ресурсы компьютера: процессор PentiumIVили Celeron 2.0Ghz.

Оперативная память не менее 512 Мбайт, достаточное количество свободного места на диске – порядка 1 Гбайт.

Программа запускается нажатием на файл Magi.exe. На открывающем окне формы расположен меню MainMenu, через которого можно открыть справки, помощь и закрыть программу. Ввод данных осуществляется с помощью случайных чисел. Нажатие на метку Показать вызывает процедуры формирования матрицы. Элементы матриц загружаются для отображения на форме в компонент StringGrid1.

Выходная информация размещается в поле Label4. Пользователю предлагается задать количество строк.

Программа загружается нажатием на файл Magi.exeиз папкиmag Кусаинова.

Исходные матрица описана как квадратные целочисленные, диапазон значений элементов от 0 до 5. Такое ограничение обусловливается предотврощением перегруза памяти компьютера и ошибок связанные размерностью матриц. Значения для StringGrid1. ColCount и StringGrid1. RowCount задаются в окне ObjectInspektor.

2.5 Тестирование программы

Программа правильно работает для целочисленной квадратной матрицы размерностью менее 30х30.

Начальный вид формы


Матрица

Результат


Результат контрольного примера

Программа предназначена для выполнения операции над матрицей. Программа написана на языке ObjectPascal. Работает в среде операционных систем Widows 2000/XP. Для полноценной работы данной программы необходимы следующие ресурсы компьютера: процессор PentiumIVили Celeron 2.0 Ghz.

Оперативная память не менее 512 Мбайт, достаточное количество свободного места на диске – порядка 1 Гбайт.

Программа запускается нажатием на файл Magi.exe. На открывающем окне формы расположен меню MainMenu, через которого можно открыть справки, помощь и закрыть программу. Ввод данных осуществляется с помощью случайных чисел. Нажатие на метку Показать вызывает процедуры формирования матрицы. Элементы матрицы и контрольной матрицы загружаются для отображения на форме в компонент StringGrid1.


Список использованных источников

1. Фаронов, В.В. Turbo Pascal [Текст]: учеб. пособие / В.В. Фаронов. – СПб.: Питер, 2006. – 366 с.

2. Бобровский, С.И. Технологии Delphi 2006. Новые возможности [Текст] / С.И. Бобровский. – СПб.: Питер, 2006.

3. Культин, Н.Б. Delphi в задачах и примерах [Текст] / Н.Б. Культин. – СПб.: БХВ-Петербург, 2004.

4. Культин, Н.Б. Основы программирования в Delphi 7 [Текст] / Н.Б. Культин. – СПб.: БХВ-Петербург, 2003.

5. Немнюгин, С.А. TurboPascal. Программирование на языке высокого уровня [Текст]: учебник для вузов / С.А. Немнюгин. – 2-е изд., перераб. и доп. – СПб.: Питер, 2006.

6. Немнюгин, С.А. Turbo Pascal: Практикум [Текст] / С.А. Немнюгин. – 2-е изд. Перераб. и доп. – СПб.: Питер, 2006.

7. Павловская, Т.А. Паскаль. Программирование на языке высокого уровня [Текст]: учебник для вузов / Т.А. Павловская. – СПб.: Питер, 2004. (допущен Министерством образования).

8. Фаронов, В.В. Турбо Паскаль 7.0. Практика программирования [Текст]: учебное пособие / В.В. Фаронов. – М.: ОМД Групп, 2003.

9. Фаронов, В.В. Delphi 2005. Язык, среда, разработка приложений [Текст] / В.В. Фаронов. – СПб.: Питер, 2005.