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

Автор работы: Пользователь скрыл имя, 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

Содержимое работы - 1 файл

Курсовая по программированию - Магический квадрат.doc

— 356.50 Кб (Скачать файл)
  1. Исходный квадрат делится на соответствующее число квадратов порядка 4. В данном случае таких квадратов будет 4. В каждом подквадрате закрашиваются диагональные элементы (главная и побочная).
  2. Остальные элементы построчно заполняются порядковыми целыми числами в направлении слева-направо и сверху-вниз по закрашенным клеткам и справа-налево и снизу-вверх по не закрашенным клеткам.
  3. Переход между цветами при заполнении происходит, если следующая для заполнения клетка меняет цвет

       
 
 
 
 
 

 

         Раздел 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);

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