Главная > Математика > Графова моделі. Остов мінімальної ваги

Графова моделі. Остов мінімальної ваги


25-01-2012, 10:29. Разместил: tester9

Основні поняття теорії графів. Інструментальні програмні засоби. Блок-схема алгоритму моделювання. Операційна середу моделювання. Контрольна задача моделювання

Введення

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

Розвиток теорії графів в основному зобов'язана великому числу всіляких додатків. Мабуть, з усіх математичних об'єктів графи займають одне з перших місць в якості формальних моделей реальних систем.

Графи знайшли застосування практично у всіх галузях наукових знань: фізики, біології, хімії, математики, історії, лінгвістиці, соціальних науках, техніці і т.п. Найбільшою популярністю теоретико-Графова моделі використовуються при дослідженні комунікаційних мереж, систем інформатики, хімічних і генетичних структур, електричних ланцюгів і інших систем мережевої структури.

Мета курсового проекту полягає в закріпленні практичних умінь і навичок в знаходженні остову мінімальної ваги за допомогою алгоритму Краскала, в розробці програми на мові Delphi для аналітичного і графічного рішень нашої поставленого завдання. Використання комп'ютерних технологій для вирішення даних задач скорочує зусилля і час людини, а це не мало важливо в теперішній час.

У курсовому проекті в розділі В«Постановка завданняВ» розглядається теоретичний матеріал по темі В«графових моделей. Остов мінімальної ваги В», в розділіВ« Алгоритм знаходження В»розглядаються алгоритми знаходження В«Остов мінімальної вагиВ», в розділі В«Інструментальні програмні засоби В»вибираються інструментальні засоби для розробки програмного продукту, в розділі В«Операційна середу моделюванняВ» визначаться інтерфейс програмного продукту, в розділі В«Контрольна задача моделюванняВ» формулюється завдання для її вирішення вручну і за допомогою програмного продукту.

1 Постановка завдання моделювання

1.1Основние поняття теорії графів

Графом називається алгоритмічна модель, яка складається з безлічі вершин (вузлів) v і з'єднують їх ребер e. Ребро - неупорядкована пара вершин графа.

Ребра називаються суміжними, якщо вони мають спільну вершину. Вершини називаються суміжними, якщо є ребро їх з'єднує. Ребро, яке з'єднує вершини, називається інцидентності цих вершин, а вершини - інцідентние цього ребру.

Граф G '(v', e ') є остовом мінімальної ваги графа G (v, e), якщо v '= v і e' - є підмножина ребер мінімальної ваги і кількості, що з'єднують ці вершини. Остовом мінімального ваги може бути мережу мінімальної вартості, в матриці з'єднання якої cij = cji.

Граф G = називається орієнтованим (Орграфом), якщо знайдеться дуга (a, b) ГЋR така, що (B, a) ГЏR.

Якщо ж відношення R симетрично, тобто з (a, b) ГЋR слід (b, a) ГЋR, то граф G називається неорієнтованим (неорграфом).

Зв'язний граф - граф, у якого для будь-яких двох різних вершин існує ланцюг (послідовність суміжних вершин), з'єднує їх.

Для вирішення даної задачі моделювання буде використаний неорієнтований зв'язний граф.

1.2 Представлення графів

Існує чотири базових уявлень графів в пам'яті машини: матриця інцидентності, матриця суміжності, матриця списків суміжності і зв'язані списки суміжності. Вони розрізняються швидкістю виконання операцій над елементами вистави і об'ємом займаної пам'яті.

Для вирішення поставленого завдання моделювання більше всього підходить уявлення графів в пам'яті машини у вигляді матриці суміжності, а саме матриця ваг.

Матриця суміжності - матриця розміром, елементи якої рівні 1, якщо i-а вершина суміжно з j-ой, і 0 у противному випадку.

Матриця суміжності є симетричною і досить просто може використовуватися для введення та обробки на ЕОМ. Для випадку зваженого графа замість 1 використовується значення вагової функції, і така матриця називається матрицею ваг. У поставленому завданню будемо використовувати матрицю ваг.

1.3 Алгоритм знаходження остова мінімального

ваги у зваженому графі

Для знаходження остову мінімальної ваги за допомогою методу Краскала потрібно виконати наступні кроки:

1.Помечают вершину початку побудови кістяка. Серед ребер, інцидентних поміченої вершині, знаходять ребро мінімальної ваги для остову. Позначають нову вершину, інцидентності цього ребру. Вершина нова, якщо до ній раніше не зверталися.

2.Смотрят, чи всі вершини помічені. Якщо так, то закінчують пошук, якщо ні, то переходять до кроку 3.

3.Среді ребер, інцидентних поміченим вершин, за винятком ребер остова і ребер, що утворюють в остові цикл, знаходять ребро мінімальної ваги для остова. Позначають нову вершину, інцидентності цього ребру, і переходять до кроку 2.

4.При зміні вершини початку конфігурація остову мінімальної ваги не змінитися. Вона може змінитися при наявності в графі ребер однакового мінімальної ваги.

2 Інструментальні програмні засоби

2.1 Обгрунтування вибору інструментальних засобів

При виборі програмних засобів для розробки програми В«Пошук остову мінімальної ваги у зваженому графіВ» ​​необхідно враховувати можливості графічного відображення графа і остову в програмі, визначення модулів в програмі і зв'язки між ними, оцінки розвиненості апарату структур і типів даних, наявність спеціальних функцій здійснення обчислень, можливість збереження проміжних результатів. Крім того, програма повинна дозволяти користувачеві повертатися до попередніх етапів обчислень і зберігати вихідні дані на жорсткому диску.

Облік цих можливостей дозволить реалізувати основні функції розроблюваної програми, зробити її легкодоступною для використання, попередити виникнення логічних помилок, забезпечити надійність програмного забезпечення та його кодифікованість.

Вибір того чи іншого програмного засобу визначається як специфікою розробки програмного забезпечення та його популярністю, так і фінансовими можливостями розробника.

В даний час найбільш поширеною середовищем є Delphi.

Delphi - пакет засобів швидкої розробки додатків. До достоїнств відносяться зручний інтерфейс, висока швидкість роботи, велика кількість бібліотек компонентів, ефективність створюваних програм. Крім того, сувора тіпізірованность мови Object Pascal дозволяє компілятору вже на етапі компіляції виявити багато помилок, а також можливість працювати з покажчиками.

У порівнянні з іншими системами візуального проектування середу Delphi проста і ефективна, а написані за допомогою неї програми мають невеликі розміри і високу продуктивність. Так само в Delphi існує велика бібліотека компонентів (командні кнопки, поля редагування, перемикачі і т.д.). За допомогою компонентів забезпечуються зручність інтерфейсу, наочність роботи програм, робота зі створення інтерфейсу скорочується до розстановки компонентів на формі.

Крім того, в Delphi є розвинені засоби для роботи з графічними можливостями Windows. У стандартному графічному інтерфейсі Windows основою для малювання служить дескриптор контексту пристрою ніс і пов'язані з ним шрифт, перо і кисть. До складу входять об'єктно-орієнтовані надбудови над останніми, призначенням яких є зручний доступ до властивостей інструментів і прозора для користувача обробка всіх їх змін. Тому використання класу TCanvas, що є основою графічної системи Delphi, дозволяє виконати одну з основних функцій розроблюваної програми - наочне уявлення графа. Delphi також дає можливість використовувати традиційний набір функцій роботи з файлами, успадкований від Turbo Pascal. Що дозволяє зберігати результати роботи програми в файли на жорсткому диску. Крім того, в даному середовищі є можливість, поряд зі звичайними масивами, створювати динамічні масиви, які гратимуть роль матриці ваг ребер граф...а. Хоча здебільшого на уявлення графа в пам'яті машини вибір інструментальних засобів особливого значення не має.

Програма CorelDRAW 11, складова основу сучасного набору програмних засобів фірми Corel, була випущена в серпні 2002 р. Вона являє собою результат дванадцятирічної еволюції, володіє дивовижною універсальністю і потужністю, будучи в рівній мірі корисної і в промисловому дизайні, і в розробці рекламної продукції, і в підготовці публікацій, і в створенні зображень для web-сторінок, також у створенні блок-схем алгоритмів. Незважаючи на те, що світовим лідером програм для роботи з векторною графікою сьогодні є інша програма - Adobe Illustrator, CorelDRAW 11 ні в чому не поступається їй, а за багатьма параметрами і перевершує, і в неї - величезна армія користувачів-професіоналів, які вважають CorelDRAW своїм основним робочим інструментом.

Користувальницький інтерфейс CorelDRAW 11 побудований дуже раціонально, з високим ступенем уніфікації і послідовним проведенням простої ідеї: якщо користувачеві не потрібні ті чи інші засоби і можливості програми, він може не затрачати час і зусилля на їх вивчення. Це робить програму вельми привабливою в якості першого програмного засобу для приступають до вивчення машинної графіки в цілому або векторної графіки в зокрема.

Таким чином, дана середу розробки програмних продуктів дозволяє виконати основні функції даної задачі.

3 Блок-схема алгоритму задачі моделювання

Малюнок 1.Блок-схема алгоритму задачі моделювання

3.1 Опис блок-схеми алгоритму задачі моделювання

Блок 1. Введення матриці ваг ребер графа. Запис графа в пам'ять комп'ютера здійснюється за допомогою двовимірного масиву, який служить матрицею ваг ребер графа.

Блок 2. Введення вершини пошуку. Після заповнення матриці ваг користувачем програма автоматично визначає вершину початку побудови кістяка.

Блок 3. Пошук ребра мінімальної ваги серед інцидентних n ребер. Програма аналізує матрицю ваг і знаходить ребро з мінімальною вагою. Знайдене ребро зберігається в змінну min.

Блок 4. Формування кістяка. Формується кістяк.

Блок 5.Вибор нової інцидентності вершини. Позначається нова вершина, інцидентних ребру, - змінна m.

Блок 6. Всі вершини графа помічені. Якщо всі вершини графа помічені, то пошук остова закінчується. Якщо ні, то серед інцидентних поміченим вершин ребер, за винятком ребер остова і ребер, що утворюють в остов цикл, відбувається пошук ребра мінімальної ваги min і побудова кістяка.

Блок 7. Висновок остова. Після того як всі вершини графа помічені, на монітор користувача виводиться остов мінімальної ваги.

Блок 8. Інцідентние поміченим вершин ребра. Якщо є такі ребра, то програма аналізує знайдені ребра, якщо немає інцидентних ребер, то програма переходить до Блоку 6.

Блок 9. Ребра остова. Знайдене ребро не використовується в остові, то програма переходить до Блоку 10, а якщо використовується, то переходить до Блоку 6.

Блок 10. Утворює ребро в остові цикл, якщо так то програма переходить до Блоку 6. Якщо ребро не утворює в остові цикл, то програма переходить до Блоку11.

Блок 11. Знаходження ребра мінімальної ваги. Програма аналізує залишилися інцідентние ребра обраної вершині і переходить до Блоку 12.

Блок 12. Формування кістяка. Програма формує отриманий остов, перевіряється зв'язаність ребер з вершинами графа, за це відповідає масив пов'язаності ar [jmin, imin], якщо він дорівнює одиницям, то всі ребра пов'язані з вершинами, якщо він не дорівнює одиниці, то продовжується формування кістяка.

Блок 13. Вибір нової інцидентності вершини. Позначається нова вершина графа, програма переходить до Блоку 6.

Блоки блок-схеми багато в чому повторюють кроки теоретичного рішення, лише незначно конкретизуючись на прив'язці до конкретної мови програмування (в даному випадку Delphi).

На відміну від блок-схеми задачі моделювання тут неможливо описати багато вироблені операції (наприклад, подання графа у вигляді графічного образу, промальовування остова та ін) у вигляді пов'язаної структури кроків вирішення задачі. Оскільки ці операції описуються безліччю процедур і функцій, властивим даному середовищі програмування.

4 Операційна середу моделювання

4.1 Опис операційного середовища моделювання

Операційна система комп'ютера являє собою комплекс взаємопов'язаних програм, який діє як інтерфейс між додатками і користувачами з одного боку, і апаратурою комп'ютера з іншого боку. Операційна система також є механізмом, який розподіляє ресурси комп'ютера.

Програма, вирішальна дану задачу моделювання, повинна забезпечувати зручний графічний інтерфейс для кращого розуміння моделі. Широке коло можливостей графічного виводу та представлення інформації надає розроблена фірмою Microsoft операційна система Windows.

Простота Windows досягнута за рахунок застосування графічного інтерфейсу користувача, що забезпечує зручну роботу.

Найширше розповсюдження Windows зробило її фактичним стандартом для IBM PC - сумісних комп'ютерів. Переважна більшість користувачів таких комп'ютерів працюють в Windows, тому в наш час більшість нових програм розробляється саме для експлуатації їх в середовищі Windows.

Windows не тільки забезпечує зручний і наочний інтерфейс для операцій з файлами, дисками і т.д., але і надає нові можливості для запускаються в середовищі Windows програм. Зрозуміло, для використання цих можливостей програми повинні бути спроектовані за вимогами Windows.

Windows має різні версії, дивлячись, для кого призначена операційна система для сервера або для клієнта. Для розробки курсового проекту я вибрав операційну систему під назвою Windows XP Professional, так як я вважаю її найбільш придатною. Дана версія Windows XP Professional найбільш поширена серед всіх версій Windows. Для цієї версії Windows написано велику кількість програм, а це означає, що цією версією Windows користується велика кількість користувачів, а якщо користуються значить вона працює коректно.

4.2 Апаратна середу моделювання

Основні апаратні витрати припадають на середу проектування даної програмної моделі (в даному випадку Delphi). Мінімальні вимоги, що пред'являються до обладнання, при роботі в даному середовищі програмування наступні:

-Процесор Intel Pentium з тактовою частотою 166 Мгц і вище;

-128 МБ оперативної пам'яті;

-вільний простір на жорсткому диску для повної установки 5 МБ;

-дисковод для компакт-дисків;

-VGA або SVGA монітор;

-стандартний маніпулятор миша і клавіатура;

-операційна система Windows 98/2000/XP.

Програмна модель потребує набагато менше апаратних засобів. Для її роботи досить стандартного набору обладнання: монітор типу VGA/SVGA, клавіатура, миша. Програма займає 568 КБ вільного простору на диску та 12 МБ оперативної пам'яті. Програма може більше займати простору на жорсткому диску це пов'язано з тим, що матриця ваг занесена користувачем перед пошуком мінімальної ваги записується у файл, і відповідно чим більше матриць ваг буде занесено тим більше буде вага файлу. Після закриття програми файл, в який записувалися матриці ваг, він віддаляється і простір на жорсткому диску звільняється - це зроблено для того щоб не В«засмічуватиВ» вільне місце на жорсткому диску. Особливих вимог до видеоадаптеру програма не має, але бажано 16 МБ і вище.

4.3 Керівництво оператора

У даному підрозділі представлений, алгоритм і правило роботи з програмою; функції програми.

Для запуску програми необхідно активувати exe - файл з назвою В«Краскал.exeВ» запуститься програма. Малюнок головної форми зображений на рісунке1.

Малюнок 2.Главная форма програми.

На головній формі програми зображені: текстове поле необхідне для введення кількість вузлів графа, для якого по...трібно буде знайти остов мінімальної ваги, потім потрібно натиснути кнопку В«ОКВ». Далі потрібно занести ваги в матрицю ваг В«ДаноВ» вводити потрібно тільки по горизонталі, а по вертикалі програма заповнить поля автоматично. Далі потрібно розставити вузли нашого графа, для цього одним клацанням по полю В«Даний графВ» створиться вузол, він буде позначений синьою крапкою аналогічно виконати для решти вершин графа. Також вузли можна розставити випадковим чином, для цього потрібно помітити прапорець В«Розмістити вузли випадковоВ» та натиснути кнопку В«МалюватиВ» при кожному натисканні на кнопку вершини будуть розміщуватися випадково. Приклад графа зображений на малюнку 2.

Малюнок 3.Графіческое зображення графа.

Після того, коли граф на малював необхідно знайти В«Остов мінімальної вагиВ» за допомогою алгоритму Краскала, для цього натискати кнопку В«ОбчислитиВ». Остов мінімальної ваги буде зображений у полі В«Отриманий мінімальний остов В»і в поліВ« Результат В»буде показаний результат вигляді матриці ваг. Результат рішення на малюнку 3.

Малюнок 4.Найденний остов мінімальної ваги.

На формі розміщені ще три кнопки:

- В«Почати зановоВ» при натисканні на цю кнопку всі поля очищаються і головна форма приймає первинний вигляд.

- В«ДопомогаВ» при натисканні на цю кнопку викликає допомогу для користувача. Допомога для користувача зображена на малюнку 4.

Малюнок 5. Допомога для користувача.

Остання кнопка, яка розміщена на формі В«ВихідВ», при натисканні на кнопку додаток буде закритий.

4.4 Ліцензійна угода

Алгоритм Краскала (версія 1.0)

1) Всіма авторськими правами на "Алгоритм Краскала "ексклюзивно володіє автор програми - Терешко Юрій Ігорович.

2) "Алгоритм Краскала" можуть поширюватися тільки в тому вигляді, в якому вони постачаються автором.

Ви використовуєте його на свій власний ризик. Автор програми.

оренду, давати напрокат, продавати, змінювати, декомпілювати,

Задача № 1.

Малюнок 6.

Крок 1.

Малюнок 7.

Крок 2.

Крок 3.

Крок 4.

А це не

Малюнок 10.

Крок 1.

Крок 2.

Крок 3.

Крок 4. Вирішимо

Малюнок 11.

Малюнок 12.

Задача № 2.

Рисунок 13.

Крок 1.

Рисунок 13.

Крок 2.

Малюнок 14.

Крок 3.

Малюнок 15.

Крок 4. поставленого завдання.

Рисунок 16.

Таблиця 1. A D K - 4 1 9 4 - - - - 4 - - - - - - 5 - 1 - - 10 - 3 - - - D 9 - 10 - 5 4 - 6 9 4 - 3 5 - 7 - - 3 - - - 4 7 - 10 - - G - - - - - 10 - - 7 - 5 - 6 - - - - 5 - - - 9 3 - 7 5 -

Рисунок 17. Це вірно.

Висновок

Є Можуть існувати ваги. Для графа.

Список літератури

- 208 с.

Delphi 7. Бази даних та додатка. Лекції і вправи. - 576 с.

2-е изд. - 1999

Pascal. - 528 с.

unit Unit1;

interface

uses

type

TForm1 = class (TForm)

SpeedButton3: TSpeedButton;

SpeedButton4: TSpeedButton;

SpeedButton5: TSpeedButton;

Edit1: TEdit;

Label1: TLabel;

Image2: TImage;

Label2: TLabel;

Label3: TLabel;

Timer1: TTimer;

CheckBox1: TCheckBox;

Bevel1: TBevel;

Bevel2: TBevel;

Bevel4: TBevel;

Bevel5: TBevel;

Bevel7: TBevel;

Bevel8: TBevel;

Bevel9: TBevel;

BitBtn1: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

Label5: TLabel;

Label6: TLabel;

procedure SpeedButton7Click (Sender:n;

Shift: TShiftState; X, Y: Integer);

procedure Image2Click (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure BitBtn2Click (Sender: TObject);

procedure VremyaTimer (Sender: TObject);

procedure FormShow (Sender: TObject);

procedure BitBtn4Click (Sender: TObject);

procedure sgClick (Sender: TObject);

procedure srClick (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

f: file of integer;

idown, n, wrt, i, j: integer;

a, ar: array [1 .. 10,1 .. 10] of integer;

m: array [1 .. 10] of integer;

vx: array [1 .. 10] of integer;

vy: array [1 .. 10] of integer;

implementation

uses Unit2;

{$ R *. dfm}

procedure TForm1.FormCreate (Sender: TObject);

var

t, i: integer;

begin

n: = 8; {спочатку число вершин = 8}

SpeedButton3.Enabled: = True;

idown: = 1;

speedbutton7.click;

image1.Canvas.brush.color: = clwhite;

image1.Canvas.pen.Color: = clwhite;

image2.Canvas.brush.color: = clwhite;

image2.Canvas.pen.Color: = clwhite;

image1.Canvas.Rectangle (0,0, image1.Width, image1.Height);

image2.Ca...nvas.Rectangle (0,0, image1.Width, image1.Height);

for i: = 1 to sr.ColCount do

for j: = 1 to sr.Rowcount do begin

sr.Cells [i, j]: ='';

end;

for i: = 1 to sg.ColCount do

for j: = 1 to sg.Rowcount do begin

sg.Cells [i, j]: ='';

edit1.Text: = inttostr (t);

for t: = 1 to n do begin

sg.Cells [t, t]: = '-';

sr.Cells [t, t]: = '-';

end; end;

edit1.Text: = inttostr (n);

end;

procedure TForm1.SpeedButton3Click (Sender: TObject);

var

o, min, imin, jmin: integer;

begin

SpeedButton3.Enabled: = false;

assignfile (f, extractfilepath (application.ExeName) + ' in.krs');

rewrite (f);

for i: = 1 to n do

for j: = 1 to n do

begin

if sg.cells [i, j] = '-' then

wrt: = 999

else

wrt: = strtoint (sg.cells [i, j]);

write (f, wrt);

end;

closefile (f);

assignfile (f, extractfilepath (application.exename) + ' in.krs');

reset (f);

for i: = 1 to n do

for j: = 1 to n do

begin

read (f, wrt);

if wrt = 999 then

sg.cells [i, j]: = '-'

else

sg.cells [i, j]: = inttostr (wrt);

a [i, j]: = wrt;

end;

closefile (f);

for i: = 1 to n do

m [i]: = 0;

m [1]: = 1;

repeat

o: = 0;

min: = 100; imin: = 1; jmin: = 1;

for i: = 1 to n do

if m [i] = 1 then

for j: = 1 to n do

if (a [i, j] <> 0) and (a [i, j] <900) and (m [j] <> 1) then

begin

if a [i, j]

begin

min: = a [i, j];

imin: = i;

jmin: = j;

o: = 1;

end; end;

if o = 1 then

begin

ar [imin, jmin]: = min;

ar [jmin, imin]: = min;

m [jmin]: = 1;

end;

until o = 0;

speedbutton4.Click;

end;

procedure TForm1.SpeedButton4Click (Sender: TObject);

begin

for i: = 1 to n do

for j: = 1 to n do

begin

if ar [i, j] = 0 then

sr.cells [i, j]: = '-'

else

sr.cells [i, j]: = inttostr (ar [i, j]);

end;

end;

procedure TForm1.SpeedButton5Click (Sender: TObject);

var

i, x, y: integer;

begin

idown: = 1;

form1.canvas.Refresh;

if checkbox1.Checked then speedbutton8.Click;

image1.Canvas.brush.color: = clwhite;

image1.Canvas.pen.Color: = clwhite;

image2.Canvas.brush.color: = clwhite;

image2.Canvas.pen.Color: = clwhite;

image1.Canvas.Rectangle (0,0, image1.Width, image1.Height);

image2.Canvas.Rectangle (0,0, image1.Width, image1.Height);

with image1.Canvas do

begin

brush.color: = cllime;

pen.Color: = clblue;

font.Name: = 'Courier';

font.Size: = 8;

for i: = 1 to n do

for j: = 1 to n do

if (a [i, j] <> 0) and (a [i, j] <900) then

begin

pen.Width: = 1;

moveto (vx [i] +7, vy [i] +7);

lineto (vx [j] +7, vy [j] +7);

brush.color: = clwhite;

textout (round ((vx [i] + vx [j] +4)/2), round ((vy [i] + vy [j] +1)/2), inttostr (a [i, j ]));

end;

brush.color: = cllime;

for i: = 1 to n do

begin

font.Size: = 1;

rectangle (vx [i], vy [i], vx [i] +15, vy [i] +15);

textout (vx [i] +4, vy [i] +1, inttostr (i));

end;

end;

with image2.Canvas do

begin

brush.color: = clLime;

pen.Color: = clblue;

font.Name: = 'Courier';

font.Size: = 8;

for i: = 1 to n do

for j: = 1 to n do

if (ar [i, j] <> 0) and (ar [i, j] <900) then

begin

pen.Width: = 1;

moveto (vx [i] +7, vy [i] +7);

lineto (vx [j] +7, vy [j] +7);

brush.color: = clwhite;

textout (round ((vx [i] + vx [j] +4)/2), round ((vy [i] + vy [j] +1)/2), inttostr (ar [i, j ]));

end;

brush.color: = cllime;

for i: = 1 to n do

begin

font.Size: = 1;

rectangle (vx [i], vy [i], vx [i] +15, vy [i] +15);

textout (vx [i] +4, vy [i] +1, inttostr (i));

end; end; end;

procedure TForm1.SpeedButton7Click (Sender: TObject);

var

i: integer;

begin

for i: = 1 to n do

begin

sg.ColCount: = n +1;

sg.Rowcount: = n +1;

sr.ColCount: = n +1;

sr.Rowcount: = n +1;

sg.Cells [0, i]: = inttostr (i);

sr.Cells [0, i]: = inttostr (i);

sg.Cells [i, 0]: = inttostr (i);

sr.Cells [i, 0]: = inttostr (i); end;

for i: = 1 to n do

for j: = 1 to n do

begin

ar [i, j]: = 0;

end;

end;

procedure TForm1.Image2DblClick (Sender: TObject);

begin

timer1.Enabled: = true;

end;

procedure TForm1.SpeedButton8Click (Sender: TObject);

begin

for i: = 1 to n do

begin

vx [i]: = random (470);

vy [i]: = random (230);

end; end;

procedure TForm1.Image1MouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

vx [idown]: = x;

vy [idown]: = y;

idown: = idown +1;

image1.Canvas.brush.color: = cllime;

image1.Canvas.pen.Color: = clblue;

image1.Canvas.Rectangle (x-1, y-1, x +1, y +1);

end;

procedure TForm1.Image2Click (Sender: TObject);

begin

image1.Canvas.brush.color: = clwhite;

image1.Canvas.pen.Color: = clwhite;

image2.Canvas.brush.color: = clwhite;

image2.Canvas.pen.Color: = clwhite;

image1.Canvas.Rectangle (0,0, image1.Width, image1.Height);

image2.Canvas.Rectangle (0,0, image1.Width, image1.Height); timer1.Enabled: = false;

end;

procedure TForm1.BitBtn1Click (Sender: TObject);

begin

n: = strtoint (edit1.text);

speedbutton7.Click;

end;

procedure TForm1.BitBtn2Click (Sender: TObject);

var i: integer;

begin

if MessageDlg ('Завершити роботу', mtConfirmation, [mbyes, mbno], 0) = MrYes then begin

AlphaBlend: = true;

i: = 255;

while i> 0 do begin

AlphaBlendValue: = i;

Application.ProcessMessages;

dec (i, 1);

end; close; end; end;

procedure TForm1.FormShow (Sender: TObject);

begin

Edit1.SetFocus;

end;

procedure TForm1.BitBtn4Click (Sender: TObject);

begin

form2.show;

end;

procedure TForm1.sgClick (Sender: TObject);

var i, j: integer;

begin

for i: = 1 to n do

for j: = 1 to n do

begin

sg.Cells [i, j]: = sg.Cells [j, i];

end;

end;

procedure TForm1.srClick (Sender: TObject);

var i, j: integer;

begin

for i: = 1 to n do

for j: = 1 to n do

begin

sr.Cells [i, j]: = sr.Cells [j, i];

end; end; end.

Додаток Б: вихідні файли

Для підготовки даної роботи були використані матеріали з сайту referat.ru/