На бирже курсовых и дипломных проектов можно найти образцы готовых работ или получить помощь в написании уникальных курсовых работ, дипломов, лабораторных работ, контрольных работ, диссертаций, рефератов. Так же вы мажете самостоятельно повысить уникальность своей работы для прохождения проверки на плагиат всего за несколько минут.

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Создание программы «Магический квадрат»

Информация:

Тип работы: курсовая работа. Добавлен: 20.10.2012. Сдан: 2012. Страниц: 13. Уникальность по antiplagiat.ru: < 30%

Описание (план):


 
 
 
 
 
 
 
 
 
     Курсовая  работа по программированию
     на  тему:
      «Создание программы «Магический квадрат»
 

 
 

     План 
 

     Введение………………………………………………………………………..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 

 

         Введение 

     Великие ученые древности считали количественные отношения основой сущности мира. Поэтому числа и их соотношения  занимали величайшие умы человечества. «В дни моей юности я в свободное время развлекался тем, что составлял… магические квадраты»- писал Бенджамин Франклин. Магический квадрат - это квадрат, сумма чисел которого в каждом горизонтальном ряду, в каждом вертикальном ряду и по каждой из диагоналей одна и та же.
     Некоторые выдающиеся математики посвятили свои работы магическим квадратам и полученные ими результаты оказали влияние  на развитие групп, структур, латинских  квадратов, определителей, разбиений, матриц, сравнений и других нетривиальных разделов математики.
     Цель  данной курсовой работы – знакомство с различными магическими квадратами, латинскими квадратами и изучение областей их применения.
     А также создание программы «Магический  квадрат». Программа проверяет, образуют ли элементы двумерного массива магический квадрат. В магическом квадрате – суммы чисел по всем вертикалям, всем горизонталям и двум диагоналям одинаковы.
 

     Раздел I. Исследовательская  часть
     1.1. История появления  магических квадратов 

     МАГИЧЕСКИЙ КВАДРАТ, квадратная таблица из целых чисел, в которой суммы чисел вдоль любой строки, любого столбца и любой из двух главных диагоналей равны одному и тому же числу.
     Магический  квадрат – древнекитайского происхождения. Согласно легенде, во времена правления императора Ю (ок. 2200 до н.э.) из вод Хуанхэ (Желтой реки) всплыла священная черепаха, на панцире которой были начертаны таинственные иероглифы (рис. 1,а), и эти знаки известны под названием ло-шу и равносильны магическому квадрату, изображенному на рис. 1,б. В 11 в. о магических квадратах узнали в Индии, а затем в Японии, где в 16 в. магическим квадратам была посвящена обширная литература. Европейцев с магическими квадратами познакомил в 15 в. византийский писатель Э.Мосхопулос. Первым квадратом, придуманным европейцем, считается квадрат А.Дюрера (рис. 2), изображенный на его знаменитой гравюре Меланхолия 1. Дата создания гравюры (1514) указана числами, стоящими в двух центральных клетках нижней строки. Магическим квадратам приписывали различные мистические свойства. В 16 в. Корнелий Генрих Агриппа построил квадраты 3-го, 4-го, 5-го, 6-го, 7-го, 8-го и 9-го порядков, которые были связаны с астрологией 7 планет. Бытовало поверье, что выгравированный на серебре магический квадрат защищает от чумы. Даже сегодня среди атрибутов европейских прорицателей можно увидеть магические квадраты.
       
     рис.1 рис.2
     В 19 и 20 вв. интерес к магическим квадратам  вспыхнул с новой силой. Их стали  исследовать с помощью методов  высшей алгебры .
     Основная  терминология
     Каждый  элемент магического квадрата называется клеткой. Квадрат, сторона которого состоит из n клеток, содержит n2 клеток и называется квадратом n-го порядка.
     В большинстве магических квадратов  используются первые n последовательных натуральных чисел. Сумма S чисел, стоящих в каждой строке, каждом столбце и на любой диагонали, называется постоянной квадрата и равна S = n(n2 + 1)/2. Доказано, что n ? 3. Зависимость постоянной квадрата от его порядка можно проследить с помощью таблицы. 

       

     Две диагонали, проходящие через центр  квадрата, называются главными диагоналями.
     Ломаной называется диагональ, которая, дойдя  до края квадрата, продолжается параллельно  первому отрезку от противоположного края (такую диагональ образуют заштрихованные клетки на рис. 3).
     Клетки, симметричные относительно центра квадрата, называются кососимметричными. Таковы, например, клетки a и b на рис. 3.
       
     рис.3
     Правила построения магических квадратов делятся  на три категории в зависимости  от того, каков порядок квадрата: нечетен, равен удвоенному нечетному числу или равен учетверенному нечетному числу. Общий метод построения всех квадратов неизвестен, хотя широко применяются различные схемы, некоторые из которых мы рассмотрим ниже.  

     1.2. Способы заполнения  магических квадратов   

     Магические  квадраты нечетного  порядка
     Магические  квадраты нечетного порядка можно  построить с помощью метода французского геометра 17 в. А.де ла Лубера (сиамский метод). Рассмотрим этот метод на примере квадрата 5-го порядка (рис. 4). Число 1 помещается в центральную клетку верхней строки. Все натуральные числа располагаются в естественном порядке циклически снизу вверх в клетках диагоналей справа налево. Дойдя до верхнего края квадрата, продолжаем заполнять диагональ, начинающуюся от нижней клетки следующего столбца (по ломаной диагонали). Дойдя до правого края квадрата, продолжаем заполнять диагональ, идущую от левой клетки строкой выше. Дойдя до заполненной клетки или угла, траектория спускается на одну клетку вниз, после чего процесс заполнения продолжается.
       
 
 

рис.4
     Для облегчения заполнения квадрата данным методом, а именно определения места  заполнения следующей клетки, после  края квадрата можно воспользоваться  следующей схемой
     Поставим 1 в среднюю клетку верхнего ряда и продолжим последовательность по диагонали вправо-вверх. Если очередное число на диагонали выходит за границы квадрата, мы его переставляем в соответствующее поле в квадрат (см. рис.5).
     Изучая  различные источники, мы обратили внимание на то, что можно заполнять квадраты и в другом направлении и не обязательно 1 стоит в данной позиции.
     Метод Ф.де ла Ира (1640–1718) основан на двух первоначальных квадратах. На рис. 5 показано, как с помощью этого метода строится квадрат 5-го порядка. В клетку первого квадрата вписываются числа от 1 до 5 так, что число 3 повторяется в клетках главной диагонали, идущей вправо вверх, и ни одно число не встречается дважды в одной строке или в одном столбце. То же самое мы проделываем с числами 0, 5, 10, 15, 20 с той лишь разницей, что число 10 теперь повторяется в клетках главной диагонали, идущей сверху вниз (рис. 5,б). Поклеточная сумма этих двух квадратов (рис. 5,в) образует магический квадрат. Этот метод используется и при построении квадратов четного порядка.  

       Рис. 5
     Проанализировав данную схему заполнения по рисунку, мы пришли к следующему алгоритму.
    В первом квадрате размещаем числа от 1 до n (порядок квадрата), так, чтобы на побочной диагонали стоял средний элемент этой последовательности.
    Все остальные элементы располагаем параллельно этой диагонали по ломаным диагоналям. Элементы на ломаной диагонали равны. Числа в сроке и столбце не должны повторяться.
    Во втором квадрате размещаем последовательные числа, кратные порядку квадрата, начиная с 0, (количество элементов равно порядку квадрата) так, чтобы на главной диагонали стоял средний элемент этой последовательности.
    Все остальные элементы располагаем параллельно этой диагонали по ломаным диагоналям. Элементы на ломаной диагонали равны.
     Достраивание  до симметричной ступенчатой  ромбовидной фигуры
     Сначала исходный пустой квадрат достраивается  до симметричной ступенчатой ромбовидной  фигуры как показано на следующем  рисунке.
       
 
 
 

 

     
     
                                 25                            
                          24             20                     
                   23      6      19      2      15              
            22      10      18      1      14      22      10       
     21             17      5      13      21      9             5
            16      4      12      25      8      16      4       
                   11      24      7      20      3              
                          6             2                     
                                 1                            
     Полученная  на шаге 1 фигура заполняется по косым  рядам снизу-вверх-направо целыми числами от 1 до n2 последовательно. Результат заполнения показан на следующем рисунке:
                                 25                            
                          24             20                     
                   23             19             15              
            22             18             14             10       
     21             17             13             9             5
            16             12             8             4       
                   11               7             3              
                          6             2                     
                                 1                            
 
     Каждое  число, расположенное в фигуре вне  исходного квадрата, переносится  по вертикали или горизонтали  внутрь исходного квадрата в самую  удаленную клетку (на n клеток).
     Способы заполнения магических квадратов  порядка, кратного четырем
     Универсальные методы составления магических квадратов  произвольного четного порядка  пока неизвестны. Однако, разработаны  индивидуальные подходы для различных  частных случаев. Ниже рассмотрен метод составления магических квадратов, порядок кратен 4. Этот метод удобно рассмотреть на примере магического квадрата 8-го порядка из натуральных чисел от 1 до 64. Метод включает следующую последовательность шагов.
    Исходный квадрат делится на соответствующее число квадратов порядка 4. В данном случае таких квадратов будет 4. В каждом подквадрате закрашиваются диагональные элементы (главная и побочная).
    Остальные элементы построчно заполняются порядковыми целыми числами в направлении слева-направо и сверху-вниз по закрашенным клеткам и справа-налево и снизу-вверх по не закрашенным клеткам.
    Переход между цветами при заполнении происходит, если следующая для заполнения клетка меняет цвет
       
 
 
 
 
 

 

         Раздел II. Конструкторская  часть
            2.1. Задание 

     Тема: Создание программы «Магический квадрат».
     Условие задачи:
     Составить программу «Магический квадрат». Программа проверяет, образуют ли элементы двумерного массива магический квадрат. В магическом квадрате – суммы  чисел по всем вертикалям, всем горизонталям и двум диагоналям одинаковы.
     Составить контрольный пример. 

     2.2. Назначение и область применения 

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

     2.3 Технические характеристики 

     Постановка  задачи – разработать проект, который  обеспечивает проверку, является ли заданная квадратная матрица магическим квадратом.
     Программа должна осуществить сложение элементов матрицы по вертикали, по горизонтали и по диагоналям.
     Входная информация по задаче – целочисленная  квадратная матрица. Выходная информация – сообщение о том, что матрица  является или не является магическим квадратом.
     Для программирования данной задачи используются структура данных – массив. Использованы конструкции разветвляющиеся и циклические конструкции.
     Массив  – совокупность однотипных элементов. Двумерный массив называются матрицей. Матрица определяется именем, размерность  и типом. Например А [4,4] – матрица из 4 строк и 4 столбцов. Доступ к элементам массива осуществляется с помощью индексов. Для доступа к элементам матрицы используются два индекса. Например A [I, j] – элемент на пересечений i – строки, j – столбца.
     В программе для удобства пользователю исходная матрица формируется с помощью генерации случайных чисел. Использованы случайные числа в пределах от 0 до 5.
     По  условию поставленной задачи необходимо программировать проверку выполнения условий магического квадрата для  исходной матрицы.
     Элементы  матрицы формируются с помощью  функции случайных чисел.
     Проверка  условий магического квадрата выполняется  вызовом отдельной процедуры.
     В программе решаются три независимые  друг от друга подзадачи.
     1. Формирование матрицы.
     2. Суммирование элементов по строкам, по столбцам, по двум диагоналям и проверка условий. 

     Сложение  элементов матрицы  по строкам
     Вначале проверяется равность суммы элементов  двух диагоналей, если они равны  по циклу проверяются равность сумм элементов строк, столбцов.
     Входными данными в данной задаче являются число n – размер и матрица размером nхn. Для условий задачи подходит квадратная матрица. Выходными данными является сообщение, о результате «матрица является магическим квадратом» или «матрица не является магическим квадратом».
     В программе для удобства исходная матрица формируется случайными числами.
     Задание на курсовую работу – разработка приложения для Windows, поэтому использована среда разработки приложений Delphi.
     Delphi – это среда быстрой разработки, в которой в качестве языка  программирования используется Object Pascal. В основе идеологии Delphi лежит  технология визуального программирования и методология объектно-ориентированного программирования. В курсовом проекте использованы три формы и следующие визуальные компоненты.
       TLabel служит для отображения текста  на экране. Можно изменить шрифт  и цвет метки, если дважды  щелкнуть на свойство Font в Инспекторе Объектов. Это легко сделать и во время выполнения программы, написав всего одну строчку кода.
       TStringGrid – служит для представления  текстовых данных в виде таблицы.  Доступ к каждому элементу  таблицы происходит через свойство Cell.
       TButton позволяет выполнить какие-либо  действия при нажатии кнопки  во время выполнения программы.  В Delphi все делается очень просто. Поместив TButton на форму, по двойному  щелчку можно создать заготовку  обработчика события нажатия  кнопки.
     Над объектами проекта использованы события Show, Create, onClick, Close.
     Для полноценной работы данной программы  необходимы следующие ресурсы компьютера: процессор Pentium IV или Celeron 2.0Ghz.
     Оперативная память не менее 512 Мбайт, достаточное  количество свободного места на диске – порядка 1 Гбайт. 
 

      
 

      Раздел III. Технологическая  часть
      3.1. Разработка программы 

     Проект  программы содержит одно окно:
     1. Form1 – главное окно (выполнение  операции над матрицами).
     Окно Form1.
     Главное окно программы – Form1
     Ниже приведены описание компонентов, некоторые похожие компоненты не описаны.
     Компонент Form1
     Свойства:
     Сaption – Магический квадрат;
     Border – bsSingle;
     BiSystemMenu – false;
     BiMinimaze – false;
     BiHelp – False;
     События: нет.
     1 – компонент TМainMenu
     Свойства:
     object MainMenu1: TMainMenu
     Items
     Справка (N1) О программе(N4)
     Выход (N2)
     События:
     Для N1 – событие BitBtn1Click (приводится ниже).
     N2Click – закончить работу с приложением.
     N1Click – перейти к работе со второй  формой.
     2 – компонент StringGrid1
     Свойства
     Left = 152
     Top = 42
     Width = 220
     Height = 180
     DefaultColWidth = 20
     DefaultRowHeight = 16
     FixedCols = 0
     FixedRows = 0
     3 – компонент Button1
     Caption = 'Магический квадрат?'
     событие
     OnClick = Button1Click
     4 – компонент Label6:
     Свойства
     Left = 96
     Top = 400
     Width = 196
     Height = 24
     Caption = «Контрольный пример»
     Font. Charset = DEFAULT_CHARSET
     OnClick = Label6Click
     5 – компонент Edit1:
     Свойства
     Left = 232
     Top = 48
     Width = 41
     Height = 32
     Написание программы
     Для решения поставленной задачи в программе  был объявлен двумерный массив(матрица)
     x:array [0.. 10,0..10] of integer;
     Доступ  к элементам массива осуществляется с помощью индексов, поэтому были объявлены целочисленные простые  переменные.
     k, s, c, i, j, n:integer;
     В программе используются циклические  конструкции. Кроме вложенных циклов с параметром программа содержит сложную конструкцию Условие [Цикл[Условие]].
      // процедура формирования матрицы  x
     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. 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;
      // Вывод в StringGrid3 контрольной матрицы
     procedure TForm1. Label6Click (Sender: TObject);
     begin
     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(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
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.