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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать файл)
ify">     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

     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.  

      

 

     Выводы

 

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

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

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

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

 

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

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

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

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

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

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

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