Студопедия — Описание применения
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Описание применения






 

Данная программа позволяет строить магические квадраты размерности 6x6. Теория магических квадратов прошла долгий и сложный путь развития. Долгое время теория не находили широкого применения, ввиду того что для решения соответствующих естественнонаучных и технических задач не было необходимости в применении теории магических квадратов. Теория рассматривалась лишь в качестве одного из математических курьёзов. Только в XIX и XX вв. интерес к магическим квадратам вспыхнул с новой силой. Их стали исследовать с помощью методов высшей алгебры и операционного исчисления. Сегодня они применяются в криптографии и приборостроении.

Традиционной сферой применения магических квадратов являются

талисманы. К примеру, талисман Луны обладает определенными свойствами:

предохраняет от кораблекрушения и болезней, делает человека любезным, способствует предотвращению дурного намерения, а так же укрепляет здоровье. Его гравируют на серебре в день и час Луны, когда Солнце или Луна находится в первых десяти градусах Рака. Однако существуют и магические квадраты для стихий и знаков Зодиака.

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


 

Заключение

 

В настоящее время в нашу жизнь широко внедряются информационные технологии. На сегодняшний день, наверное, не осталось такой области, где бы они ни применялись. Постоянно растет объем и сложность обрабатываемой информации, требуются все новые и новые виды ее представления. Как показывает практика, большинство пользователей уже не представляют себе, как бы они выполняли свою работу, с которой прекрасно справлялись еще 10 – 15 лет назад, без помощи компьютера.

В ходе исследовательской работы разработана тестирующая программа. Проектирование выполнено в системе Delphi. В работе:

· представлена информация о магическом квадрате и используемом методе заполнения магического квадрата;

· приведен теоретический материал о компонентах, используемых в программе;

· представлен листинг программы;

· приведен анализ и тестирование программы с подробным описанием.

В наше время магические квадраты продолжают привлекать к себе

внимание любителей математических игр и развлечений. Возросло число

книг по занимательной математике, в которых содержатся головоломки и

задачи, связанные с необычными квадратами. Для их успешного решения

требуются не столько специальные знания, сколько смекалка и умение под-

мечать числовые закономерности. Решение таких задач послужит прекрасной

«гимнастикой для ума». Понять удивительную красоту, содержащуюся в магических квадратах

не всякому дано, но один раз осознав стройность чисел можно получить

огромное удовольствие.

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

1. Магические квадраты – это нечто удивительное, интересное и

увлекательное.

2. Заполнять магические квадраты несложно, но необходимо знать

некоторые правила.

3. Главными чертами магических квадратов являются не только ясность,

чёткость и логика, но и эстетичность, стройность и красота.

4. Законы квадратов отражают законы красоты.

В ходе работы познакомилась с более широкими возможностями языка программирования Delphi, по сравнению с языком Pascal. Постараюсь применить полученные знания при участии в олимпиадном движении по программированию. В ходе выполнения курсового проекта пришлось сталкиваться с некоторыми проблемами. Над программой было проведено ряд испытаний и тестов. В результате все ошибки и недочеты были устранены. Реализованные в проекте процедуры и функции работают без ошибок. Ошибки могут быть вызваны неправильной эксплуатацией программы или изменением кода.

 


 

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
КП 23494.011106.081 ПЗ  
Разраб.
Лосева 27М
Провер.
Апанасевич
Реценз.
 
Н. Контр.
 
Утверд.
 
Головоломка «Магический квадрат: первые встречные» Пояснительная записка  
Лит.
Листов
 
МГВРК
Список использованных источников

1. Архангельский А.Я. Delphi 6. Справочное пособие – М.: ЗАО «Издательство БИНОМ», 2001.

2. Болл У., Коксетер Г. «Математические эссе и развлечения» - М.: Мир, 1986.

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

4. Постников М.М. «Магические квадраты» - М.: Наука, 1964.

5. Фаронов В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов – СПб.: Питер, 2008. -640 с.

6. Флёнов М. В. Библия Delphi - Москва, 2012.

 


Приложение Б

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

type

mass = array [0..5] of Integer;

TForm1 = class(TForm)

MagicSquare: TStringGrid;

mm1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

GroupBox1: TGroupBox;

pm1: TPopupMenu;

None1: TMenuItem;

N11: TMenuItem;

N21: TMenuItem;

N31: TMenuItem;

N41: TMenuItem;

N51: TMenuItem;

CheckButton: TButton;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

procedure N51Click(Sender: TObject);

procedure MagicSquareMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormCreate(Sender: TObject);

procedure FillFixedLines();

function CheckAll():Boolean;//Проверяет правильность заполнения поля

function CheckLines():Boolean;//проверяет совпадения в стоках и столбцах

function CheckBorderLines():Boolean;

procedure CheckButtonClick(Sender: TObject);

procedure MagicSquareDrawCell(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure N6Click(Sender: TObject);//Проверяет "Соответстиве боковым линиям"

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

SelectCol,SelectRow:Integer;

Game: Integer;

implementation

uses Math, Unit2;

{$R *.dfm}

procedure TForm1.N51Click(Sender: TObject);

begin

MagicSquare.Cells[SelectCol,SelectRow]:= IntToStr((Sender as TMenuItem).Tag);

end;

procedure TForm1.MagicSquareMouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

SelectCol:= (X) div 32;

SelectRow:= (Y) div 32;

if (SelectCol <= 0) or (SelectCol >= 7) then

Exit;

if (SelectRow <= 0) or (SelectRow >= 7) then

Exit;

pm1.Popup(X+Left,Y+Top);

end;

procedure Clear(var a:mass);

var

i:Integer;

begin

for i:= 0 to 5 do

a[i]:=0;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

// FillFixedLines();

end;

function TForm1.CheckAll():Boolean;

begin

if not CheckBorderLines() then

begin

ShowMessage('Столбцы и строки, примыкающие к границам должны им соответствовать!');

CheckAll:= False;

Exit;

end;

if not CheckLines() then

begin

ShowMessage('Строка или столбец имеет повторяющееся значение!');

CheckAll:= False;

Exit;

end;

end;

function TForm1.CheckLines():Boolean;

var

i,j:Integer;

Col,Row:mass;

begin

Clear(Col);

Clear(Row);

for i:=1 to 6 do

begin

Clear(Row);

for j:=1 to 6 do

if Row[StrToInt(MagicSquare.Cells[i,j])] = 0 then

Inc(Row[StrToInt(MagicSquare.Cells[i,j])])

else

begin

CheckLines:= False;

Exit;

end;

end;

for j:=1 to 6 do

begin

Clear(Col);

for i:=1 to 6 do

if Col[StrToInt(MagicSquare.Cells[i,j])] = 0 then

Inc(Col[StrToInt(MagicSquare.Cells[i,j])])

else

begin

CheckLines:= False;

Exit;

end;

end;

CheckLines:=True;

end;

function CheckFill():Boolean;

var

i,j:Integer;

begin

for i:=1 to 6 do

for j:= 1 to 6 do

if Form1.MagicSquare.Cells[i,j] = '' then

begin

Result:= False;

Exit;

end;

Result:= True;

end;

function TForm1.CheckBorderLines():Boolean;

var

i,count:Integer;

begin

count:= 0;

for i:= 1 to 6 do

if not(MagicSquare.Cells[i,1] = MagicSquare.Cells[i,0]) and

not(MagicSquare.Cells[i,1] = '0') then

begin

CheckBorderLines:= False;

Exit;

end;

CheckBorderLines:= True;

end;

procedure TForm1.FillFixedLines();

var

i:Integer;

t:Integer;

a:mass;

begin

Randomize();

Clear(a);

for i:=1 to 6 do //Заполняем первый столбец рандомом

begin

t:= Random(5)+1;

while not(a[t] = 0) do

begin

t:= Random(6);

end;

Inc(a[t]);

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

end;

if MagicSquare.Cells[0,6] = '0' then

MagicSquare.Cells[0,6]:= IntToStr(Random(4)+1);

Clear(a);

a[StrToInt(MagicSquare.Cells[0,1])]:= 1;

MagicSquare.Cells[1,0]:= MagicSquare.Cells[0,1];

for i:=2 to 6 do

begin

t:= Random(5)+1;

while not(a[t] = 0) do

begin

t:= Random(6);

end;

Inc(a[t]);

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

end;

if MagicSquare.Cells[6,0] = '0' then

MagicSquare.Cells[6,0]:= IntToStr(Random(4)+1);

Clear(a);

a[StrToInt(MagicSquare.Cells[6,0])]:= 1;

MagicSquare.Cells[7,1]:= MagicSquare.Cells[6,0];

for i:=2 to 6 do

begin

t:= Random(5)+1;

while not(a[t] = 0) do

begin

t:= Random(6);

end;

Inc(a[t]);

MagicSquare.Cells[7,i]:= IntToStr(t);

end;

if MagicSquare.Cells[7,6] = '0' then

MagicSquare.Cells[7,6]:= IntToStr(Random(4)+1);

Clear(a);

a[StrToInt(MagicSquare.Cells[7,6])]:= 1;

a[StrToInt(MagicSquare.Cells[0,6])]:= 1;

MagicSquare.Cells[6,7]:= MagicSquare.Cells[7,6];

MagicSquare.Cells[1,7]:= MagicSquare.Cells[0,6];

for i:=2 to 5 do

begin

t:= Random(5)+1;

while not(a[t] = 0) do

begin

t:= Random(6);

end;

Inc(a[t]);

MagicSquare.Cells[i,7]:= IntToStr(t);

end;

//В процессе заполнения, некоторые значения получили нуули!

//Избавимся от них

for i:=2 to 6 do

if MagicSquare.Cells[i,0] = '0' then

MagicSquare.Cells[i,0]:= IntToStr(Random(4)+1);

for i:=2 to 6 do

if MagicSquare.Cells[7,i] = '0' then

MagicSquare.Cells[7,i]:= IntToStr(Random(4)+1);

for i:=2 to 6 do

if MagicSquare.Cells[i,7] = '0' then

MagicSquare.Cells[i,7]:= IntToStr(Random(4)+1);

for i:=2 to 6 do

if MagicSquare.Cells[0,i] = '0' then

MagicSquare.Cells[0,i]:= IntToStr(Random(4)+1);

end;

procedure TForm1.MagicSquareDrawCell(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

var

i,j:Integer;

begin

if (Arow = 0) or (Arow = 7) or (ACol = 0) or (ACol = 7) then

MagicSquare.Canvas.Brush.Color:= clGreen

else if MagicSquare.Cells[ACol,Arow] = '0' then

MagicSquare.Canvas.Brush.Color:= clBlack

else

MagicSquare.Canvas.Brush.Color:= clWhite;

MagicSquare.Canvas.FillRect(Rect);

MagicSquare.Canvas.TextOut(Rect.Left+2,Rect.Top,MagicSquare.Cells[Acol,Arow]);

end;

procedure TForm1.N2Click(Sender: TObject);

begin

CLose();

end;

procedure TForm1.N3Click(Sender: TObject);

var

i,j:Integer;

S: string;

Sub: TStringList;

SubMass: array [1..8] of String;

Count: Integer;

begin

Randomize;

Game:= RandomRange(1, 6);

Sub:= TStringList.Create;

Sub.LoadFromFile('start/' + IntToStr(Game) + '.txt');

S:= Sub.Strings[0];

Count:= 1;

while Pos(' ', S) <> 0 do

begin

SubMass[Count]:= Copy(S, 1, Pos(' ', S) - 1);

S:= Copy(S, Pos(' ', S) + 1, MaxInt);

Inc(Count);

end;

for I:= 1 to MagicSquare.RowCount - 1 do

begin

MagicSquare.Cells[I, 0]:= SubMass[I];

end;

S:= Sub.Strings[1];

Count:= 1;

while Pos(' ', S) <> 0 do

begin

SubMass[Count]:= Copy(S, 1, Pos(' ', S) - 1);

S:= Copy(S, Pos(' ', S) + 1, MaxInt);

Inc(Count);

end;

for I:= 1 to MagicSquare.RowCount - 1 do

begin

MagicSquare.Cells[7, I]:= SubMass[I];

end;

S:= Sub.Strings[2];

Count:= 1;

while Pos(' ', S) <> 0 do

begin

SubMass[Count]:= Copy(S, 1, Pos(' ', S) - 1);

S:= Copy(S, Pos(' ', S) + 1, MaxInt);

Inc(Count);

end;

for I:= 1 to MagicSquare.RowCount - 1 do

begin

MagicSquare.Cells[I, 7]:= SubMass[I];

end;

S:= Sub.Strings[3];

Count:= 1;

while Pos(' ', S) <> 0 do

begin

SubMass[Count]:= Copy(S, 1, Pos(' ', S) - 1);

S:= Copy(S, Pos(' ', S) + 1, MaxInt);

Inc(Count);

end;

for I:= 1 to MagicSquare.RowCount - 1 do

begin

MagicSquare.Cells[0, I]:= SubMass[I];

end;

end;

procedure Check;

var

Sub: TStringList;

S, S1: String;

I, X: Integer;

begin

if not CheckFill() then

begin

ShowMessage('Поле должно быть заполнено полностью');

Exit;

end;

Sub:= TStringList.Create;

Sub.LoadFromFile('finish/' + IntToStr(Game) + '.txt');

S:= '';

for I:= 1 to Form1.MagicSquare.RowCount - 2 do

for X:= 1 to Form1.MagicSquare.RowCount - 2 do

begin

S:= S + Form1.MagicSquare.Cells[X, I] + ' ';

end;

S1:= '';

for I:= 0 to Sub.Count - 1 do

begin

S1:= S1 + Sub.Strings[I];

end;

if S = S1 then ShowMessage('Вы выиграли!!')

else ShowMessage('Вы проиграли.');

end;







Дата добавления: 2015-09-07; просмотров: 363. Нарушение авторских прав; Мы поможем в написании вашей работы!



Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

САНИТАРНО-МИКРОБИОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ВОДЫ, ВОЗДУХА И ПОЧВЫ Цель занятия.Ознакомить студентов с основными методами и показателями...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

Толкование Конституции Российской Федерации: виды, способы, юридическое значение Толкование права – это специальный вид юридической деятельности по раскрытию смыслового содержания правовых норм, необходимый в процессе как законотворчества, так и реализации права...

Значення творчості Г.Сковороди для розвитку української культури Важливий внесок в історію всієї духовної культури українського народу та її барокової літературно-філософської традиції зробив, зокрема, Григорій Савич Сковорода (1722—1794 pp...

Studopedia.info - Студопедия - 2014-2024 год . (0.014 сек.) русская версия | украинская версия