Автор работы: Пользователь скрыл имя, 20 Января 2012 в 22:52, курсовая работа
Цель данной курсовой работы – знакомство с различными магическими квадратами, латинскими квадратами и изучение областей их применения.
А также создание программы «Магический квадрат». Программа проверяет, образуют ли элементы двумерного массива магический квадрат. В магическом квадрате – суммы чисел по всем вертикалям, всем горизонталям и двум диагоналям одинаковы.
Разработка программы выполнения действий над элементами матрицы, учитывая условия магического квадрата.
Введение………………………………………………………………………..3
Раздел I. Исследовательская часть……………………………………………4
1.1. История появления магических квадратов…………………………...4
1.2. Способы заполнения магических квадратов………………………….6
Раздел II. Конструкторская часть……………………………………………11
2.1. Задание…………………………………………………………………11
2.2. Назначение и область применения…………………………………...11
2.3. Технические характеристики…………………………………………11
Раздел III. Технологическая часть…………………………………………..14
3.1. Разработка программы………………………………………………...14
3.2. Текст программы………………………………………………………18
3.3. Описание программы………………………………………………….24
3.4. Тестирование программы……………………………………………..24
Выводы………………………………………………………………………..26
Литература……………………………………………………………………27
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;
3.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}
// формирование матрицы
procedure TForm1. 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;
// основная процедура вычислении и проверки
procedure TForm1. 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;
// запустить 2-форму
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.
3.3.
Описание программы
Программа предназначена для выполнения операции над матрицей. Программа написана на языке Object Pascal. Работает в среде операционных систем Widows 2000/XP. Для полноценной работы данной программы необходимы следующие ресурсы компьютера: процессор Pentium IV или Celeron 2.0Ghz.
Оперативная память не менее 512 Мбайт, достаточное количество свободного места на диске – порядка 1 Гбайт.
Программа запускается нажатием на файл Magic_square(1).exe. Ввод данных осуществляется с помощью случайных чисел. Нажатие на метку Показать вызывает процедуры формирования матрицы. Элементы матриц загружаются для отображения на форме в компонент StringGrid1.
Исходные
матрица описана как квадратные целочисленные,
диапазон значений элементов от 0 до 5.
Такое ограничение обусловливается предотврощением
перегруза памяти компьютера и ошибок
связанные размерностью матриц. Значения
для StringGrid1. ColCount и StringGrid1. RowCount задаются
в окне ObjectInspektor.
3.4
Тестирование программы
Программа правильно работает для целочисленной квадратной матрицы размерностью менее 30х30.
Результат
контрольного примера
Программа предназначена для выполнения операции над матрицей. Программа написана на языке Object Pascal. Работает в среде операционных систем Widows 2000/XP. Для полноценной работы данной программы необходимы следующие ресурсы компьютера: процессор Pentium IV или Celeron 2.0 Ghz.
Оперативная память не менее 512 Мбайт, достаточное количество свободного места на диске – порядка 1 Гбайт.
Программа
запускается нажатием на файл Magic_square(1).exe.
В настоящее время в нашу жизнь широко внедряются информационные технологии. На сегодняшний день, наверное, не осталось такой области, где бы они ни применялись.
Постоянно
растет объем и сложность
В ходе исследовательской работы разработана тестирующая программа. Проектирование выполнено в системе Delphi. В работе:
Список
использованных источников
1. Фаронов, В.В. Turbo Pascal [Текст]: учеб. пособие / В.В. Фаронов. – СПб.: Питер, 2006. – 366 с.
2. Бобровский, С.И. Технологии Delphi 2006. Новые возможности [Текст] / С.И. Бобровский. – СПб.: Питер, 2006.
3. Культин, Н.Б. Delphi в задачах и примерах [Текст] / Н.Б. Культин. – СПб.: БХВ-Петербург, 2004.
4. Культин, Н.Б. Основы программирования в Delphi 7 [Текст] / Н.Б. Культин. – СПб.: БХВ-Петербург, 2003.
5. Немнюгин, С.А. Turbo Pascal. Программирование на языке высокого уровня [Текст]: учебник для вузов / С.А. Немнюгин. – 2-е изд., перераб. и доп. – СПб.: Питер, 2006.