ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

Поиск ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠœΠ΅ΡΡ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΈΠ½ΠΈΡˆΠ° ΠΈ ΡΡ‚Π°Ρ€Ρ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° (Ρ‚Π°ΠΊΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ) ПослС установки ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ области m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, послС Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ доступности (Π²Π½ΡƒΡ‚Ρ€ΠΈ m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°) ΠΈ Π½Π΅ Π΄ΠΎΡΡ‚упности (Π²Π½Π΅ m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°) Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ, Π² ΡΠΎΠΎΡ‚вСтствии с ΡΡ‚ΠΈΠΌ, ΠΎΡ‚Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΈΠ· Π½ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ задСйствованныС Π² ΠΏΡƒΡ‚ΠΈ. Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Поиск ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

АгСнтство ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ ВихоокСанский государствСнный экономичСский унивСрситСт ЭкономичСский институт

Поиск ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»: ΠœΠ°Ρ‚Π²Π΅Π΅Π² А.Π’.

Владивосток 2009

УсловиС Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ дословно ΠΏΠΎ Π·Π°Π΄Π°Π½ΠΈΡŽ Π·Π²ΡƒΡ‡ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: «Π’ Π·Π°Π΄Π°Π½Π½ΠΎΠΌ m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ Π½Π°ΠΉΡ‚ΠΈ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ стартом, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΅Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½, ΠΈ Ρ„ΠΈΠ½ΠΈΡˆΠ΅ΠΌ, находящимся Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΅Π³ΠΎ сторон».

Для большСй эффСктивности ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ старт ΠΈ Ρ„ΠΈΠ½ΠΈΡˆ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ поля N Π½Π° N Π΄Π»Ρ дальнСйшСго построСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Ρ‘, создаваСмого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. ГрафичСски ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ стартом Ρ„ΠΈΠ½ΠΈΡˆΠ΅ΠΌ.

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ вычислСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ

— Ρ€Π°Π·ΠΌΠ΅Ρ€ поля;

— ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ, для построСния m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°

— ΠΌΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½ m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ)

— ΠΌΠ΅ΡΡ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΈΠ½ΠΈΡˆΠ° ΠΈ ΡΡ‚Π°Ρ€Ρ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° (Ρ‚Π°ΠΊΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ) ПослС установки ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ области m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, послС Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ доступности (Π²Π½ΡƒΡ‚Ρ€ΠΈ m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°) ΠΈ Π½Π΅ Π΄ΠΎΡΡ‚упности (Π²Π½Π΅ m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°) Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ, Π² ΡΠΎΠΎΡ‚вСтствии с ΡΡ‚ΠΈΠΌ, ΠΎΡ‚Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΈΠ· Π½ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ задСйствованныС Π² ΠΏΡƒΡ‚ΠΈ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ (m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ) ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ стартом ΠΈ Ρ„ΠΈΠ½ΠΈΡˆΠ΅ΠΌ.

НСобходимо ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ цСлостности Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ поля ΠΈ ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ.

НС Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ совпадСния Ρ„ΠΈΠ½ΠΈΡˆΠ° ΠΈ ΡΡ‚Π°Ρ€Ρ‚Π° ΠΈΠ»ΠΈ установку ΠΈΡ… Π²Π½Π΅ области, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Π·Π°Ρ€Π°Π½Π΅Π΅ построСнной области ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ постановка Π·Π°Π΄Π°Ρ‡ΠΈ

ПолоТим ΠΏΠΎΠ»Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом Shape’ΠΎΠ², основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задания Π²Π΅Ρ€ΡˆΠΈΠ½ m-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, старта ΠΈ Ρ„ΠΈΠ½ΠΈΡˆΠ°, Π° Ρ‚Π°ΠΊΠΆΠ΅ графичСскоС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΡΠΎΠΎΡ‚вСтствии Π΅ΠΌΡƒ поставим Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΉ массив (доступныС ΠΈ Π½Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ).

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±ΡƒΠ»Π΅Π²ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ старта ΠΈ Ρ„ΠΈΠ½ΠΈΡˆΠ° вычисляСм Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π»Π΅Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массива Shape’ΠΎΠ².

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ

Локализация Ρ‚ΠΎΡ‡Π΅ΠΊ

БущСствуСт довольно ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основываСтся Π½Π° ΡΠ²ΠΎΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ…, ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ прСимущСства ΠΈ, соотвСтствСнно, нСдостатки. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π±Ρ‹Π» использован Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простой ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ имССтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ расстояниС.

Π‘ΡƒΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ. По Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌ строится ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ ΠΈ Π·Π°Π»ΠΈΠ²Π°Π΅Ρ‚ся Ρ†Π²Π΅Ρ‚ΠΎΠΌ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ Ρ†Π²Π΅Ρ‚Π° Ρ„ΠΎΠ½Π°. Π”Π°Π»Π΅Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΠ΄Ρ‘Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ†Π²Π΅Ρ‚Π° ΠΊΠ°Π½Π²Ρ‹. Если Ρ†Π²Π΅Ρ‚ ΠΊΠ°Π½Π²Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ совпадаСт со Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π·Π°Π»ΠΈΠ²ΠΊΠΈ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° Ρ‚ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ области.

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°:

with canvas do begin

setlength (tochka, m);

for i:=0 to m-1 do begin

tochka[i]. X:=integer (vershina[i].x^)+round (h/(4*n));

tochka[i].Y:=integer (vershina[i].y^)+round (h/(4*n));

end;

Pen.Color:=clred;

Polygon (tochka);

brush.color:=clred;

end;

end;

Π—Π΄Π΅ΡΡŒ здСсь vershina[]. Ρ… ΠΈ vershina[]. Ρƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Top ΠΈ Left Shape’ΠΎΠ², tochka[]-массив ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ² этих Left Shape’ΠΎΠ².

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ†Π²Π΅Ρ‚Π°:

for i:=0 to n-1 do

for j:= 0 to n-1 do

if canvas. Pixels[a[i, j]. Left+round (h/(4*n)), a[i, j].Top+round (h/(4*n))]=clred then

a[i, j]. Brush. Color:=clgreen;

Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΌ случаС. Π•Π³ΠΎ ΡΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π½Π°Ρ‡Π°Π»Π΅ строится ΠΊΠΎΠ½Ρ‚ΡƒΡ€ области, Π° ΠΏΠΎΡ‚ΠΎΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΠ΄Π΅Ρ‚ подсчёт ΠΊΠΎΠ»-Π²Π° пСрСсСчСний Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· эту Ρ‚ΠΎΡ‡ΠΊΡƒ, с ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°ΠΌΠΈ области слСва ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. Если ΠΊΠΎΠ»-Π²ΠΎ Π½Π΅Ρ‡Ρ‘Ρ‚Π½ΠΎ Ρ‚ΠΎ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ области, ΠΈΠ½Π°Ρ‡Π΅ Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ тСкст Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

dx:=(bx-ax)/m;

расстояниС ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сосСдними Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Ρ€Π΅Π±Ρ€Π°

dy:=(by-ay)/m;//ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ

{Локализация}

x:=ax+dx/2;

for i:=1 to m do begin

y:=ay+dy/2;

//WriteLn (fout);

for j:=1 to m do begin

//Write (fout,'(', x:0:1,',', y:0:1,')',' ');

{(x, y)-локализация}

L:=0; {Число пСрСсСчСний слСва}

for k:=1 to n-1 do begin

x1:=xv[k]; y1:=yv[k]; {Π Π΅Π±Ρ€ΠΎ}

x2:=xv[k+1]; y2:=yv[k+1];

if ((y1

((y2

{Π£Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ прямой Ρ‡Π΅Ρ€Π΅Π· 2 Ρ‚ΠΎΡ‡ΠΊΠΈ}

x3:=(y-y1)/(y2-y1)*(x2-x1)+x1;

if x3

end;

end;

y:=y+dy;

//WriteLn (fout,'L=', L);

if (L mod 2) =0 then b[m-j+1,i]: =0 else b[m-j+1,i]: =1;

end;

x:=x+dx;

end;

for i:=1 to m do begin

WriteLn (fout);

for j:=1 to m do begin

Write (fout, b[i, j]);

end;

end;

Поиск ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ

Π‘ΡƒΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° состоит Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ, Π² ΡΠΎΠΎΡ‚вСтствиС Π±ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅ΠΉ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π΅ΠΊ, ставится цСлочислСнная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΌΠ΅Ρ‚ΠΎΠΊ. Π’ Π΅Ρ‘ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ»-Π²Π° Ρ…ΠΎΠ΄ΠΎΠ², Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ ΠΈΠ· Ρ„ΠΈΠ½ΠΈΡˆΠ° Π² Π΄Π°Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π±ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Когда устанавливаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΌΠ΅Ρ‚ΠΊΡƒ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ старту начинаСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ…ΠΎΠ΄. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡ‰Π΅Ρ‚ сосСднюю старту Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΌΠ΅Ρ‚ΠΊΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π° 1 мСньшС ΠΌΠ΅Ρ‚ΠΊΠΈ старта. Π”Π°Π»Π΅Π΅ ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ повторяСтся Ρ‚Π° ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠΈ Ρ‚Π°ΠΊ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнут Ρ„ΠΈΠ½ΠΈΡˆ.

procedure Tgraph. find (var z: Tmatrix;a, b: Txy;n:Integer);

var i, j, i1,j1:integer;

c:Integer;//для записи Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΌΠ΅Ρ‚ΠΊΠΈ

yyy:Boolean;//ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°

LABEL LBL;

begin

ny:=0;//Π΄Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ

//Π·ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠΊ бСсконСчностями

for i:=0 to n-1 do

for j:=0 to n-1 do metka1[i, j]: =$ 7fff;

metka1[b.x, b. y]:=0;//ΠΌΠ΅Ρ‚ΠΊΠ° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Ρ„ΠΈΠ½ΠΈΡˆΡƒ

//ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° записываСт Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΊΠΎΠ»-Π²ΠΎ Ρ…ΠΎΠ΄ΠΎΠ²,

//Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² Π½Π΅Ρ‘ с Ρ„ΠΈΠ½ΠΈΡˆΠ°

c:=-1;

while 1000>=c do begin

c:=c+1;

for i:=0 to n-1 do begin

for j:=0 to n-1 do begin

if metka1[i, j]=c then begin

for i1:=-1 to 1 do begin

for j1:=-1 to 1 do begin

if (i1=0) and (j1=0) then continue;//Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ саму Ρ‚ΠΎΡ‡ΠΊΡƒ

if not z[i+i1,j+j1] or (metka1[i+i1,j+j1]<>$ 7fff) then continue;//Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π΅ Π΄ΠΎΡΡ‚ΡƒΠΏ- //Π½Π° ΠΈΠ»ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ отсутствуСт

metka1[i+i1,j+j1]: =c+1;

if (i+i1=a.x) and (j+j1=a.y) then begin//ΠΏΠΎΠΏΠ°Π»ΠΈ Π½Π° ΡΡ‚Π°Ρ€Ρ‚

goto LBL;

end;

end;

end;

end;

end;

end;

end;

//запись ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠΊ Π² Ρ‚Скстовый Ρ„Π°ΠΉΠ»

LBL:

//ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° двигаясь ΠΎΡ‚ ΡΡ‚Π°Ρ€Ρ‚Π° ΠΊ Ρ„ΠΈΠ½ΠΈΡˆΡƒ ΠΏΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌ

//заносит ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΌΠ°ΡΡΠΈΠ² Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΡƒΡ‚ΠΈ

if metka1[a.x, a. y]=$ 7fff then begin

exit;

end;

c:=metka1[a.x, a. y]; //ΠΊΠΎΠ»-Π²ΠΎ Ρ…ΠΎΠ΄ΠΎΠ² ΠΎΡ‚ ΡΡ‚Π°Ρ€Ρ‚Π° Π΄ΠΎ Ρ„ΠΈΠ½ΠΈΡˆΠ°

i:=a.x;

j:=a.y;

yWay[1]: =a;

ny:=1;//ΠΊΠΎΠ»-Π²ΠΎ Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡƒΡ‚ΠΈ

while c>0 do begin

c:=c-1;

yyy:=False;

for i1:=-1 to 1 do begin

for j1:=-1 to 1 do begin

if (i1=0) and (j1=0) then continue;//Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ саму Ρ‚ΠΎΡ‡ΠΊΡƒ

if metka1[i+i1,j+j1]<>c then continue;

ny:=ny+1;//ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ ΠΏΡƒΡ‚ΠΈ

yWay[ny]. x:=i+i1;//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ

yWay[ny]. y:=j+j1;// Π² ΠΏΡƒΡ‚ΡŒ

if (i+i1=b.x) and (j+j1=b.y) then exit;

i:=i+i1;

j:=j+j1;

yyy:=TRUE;//ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° «FOR»

break;

end;

if yyy then break;

end;

end;

end;

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅ приводятся тСксты основного модуля Π±Π΅Π· тСкста модуля для расчёта ΠΏΡƒΡ‚ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅Π³ΠΎ главная Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π²Ρ‹ΡˆΠ΅.

unit MainUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, Sgraph;

Const

nMaxShape=25;

type

coordinate=record

x:pointer;

y:pointer

end;

razmetka=array[0.nMaxShape, 0. nMaxShape] of TShape;

TForm1 = class (TForm)

Panel1: TPanel;

btnstroi: TButton;

btnfinish: TButton;

btnstart: TButton;

btnnew: TButton;

Edit1: TEdit;

Edit2: TEdit;

btnGraph: TButton;

Label1: TLabel;

Label2: TLabel;

procedure matriza ();

procedure btnstroiClick (Sender: TObject);

procedure btnnewClick (Sender: TObject);

procedure vershini (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormCreate (Sender: TObject);

procedure btnstartClick (Sender: TObject);

procedure btnfinishClick (Sender: TObject);

procedure FormPaint (Sender: TObject);

procedure FormResize (Sender: TObject);

procedure btnGraphClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

function min (x, y: integer):integer;

procedure DrawWay;

procedure myShape;

public

k:integer;

a:razmetka;

end;

var

index1,index2:boolean;//ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° возмоТности расчёта

Form1: TForm1;

n, h, m:integer;

vershina: array of coordinate;

tochka:array of Tpoint;

matr: TMatrix;

nachialo, konez: Txy;

implementation

{$R *.dfm}

//Π²Ρ‹Π±ΠΎΡ€ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»-Π²Π° Shape’ΠΎΠ²

procedure TForm1. myShape;

var i, j: integer;

begin

for i:=0 to n-1 do

for j:=0 to n-1 do begin

a[i, j]. Shape:=stcircle;

a[i, j].Parent:=self;

a[i, j].Brush.Color:=clwhite;

a[i, j].Height:=round (h/(2*n));

a[i, j].Width:=round (h/(2*n));

a[i, j].Top:=round (i*h/n);

a[i, j].Left:=round (j*h/n);

a[i, j].Show;

end;

end;

//созданиС массива шСйпов

procedure TForm1. btnstroiClick (Sender: TObject);

var i, j: integer;

begin

try

m:=strtoint (edit2.Text);//ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ

n:=strtoint (edit1.Text);//Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ

if (n<=nMaxShape)and (m

setlength (vershina, m); myShape ();btnStroi.Enabled:=False

end

else begin

application.MessageBox ('Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ»-Π²ΠΎ Ρ‚ΠΎΡ‡Π΅ΠΊ<οΏ½Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ <'+'25','ошибка');

edit1.Clear;edit2.clear; edit1. SetFocus;

end;

except

application.MessageBox ('Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ†Π΅Π»ΠΎΠ΅ число','ошибка');

edit1.Clear;edit1.Clear;edit1.SetFocus;

end;

end;

procedure TForm1. btnnewClick (Sender: TObject);

var j, i: integer;

begin

wGraph.ny:=0; //НСт ΠΏΡƒΡ‚ΠΈ

k:=0;

for i:=0 to n-1 do

for j:=0 to n-1 do a[i, j]. Hide;

invalidate;

edit1.Clear;

edit1.SetFocus;

edit2.Clear;

index1:=false;index2:=false;

btnStroi.Enabled:=True;

end;

//созданиС области ΠΏΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌ (ShapeClick)

procedure TForm1. vershini (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var i, j: integer;

begin

if k

begin //ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ массива Ρ‚ΠΎΡ‡Π΅ΠΊ для ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°

vershina[k]. x:=@(sender as TShape).left;

vershina[k]. y:=@(sender as TShape).top;

(sender as TShape).brush.Color:=clgreen;

k:=k+1;

if k=m then

begin formpaint (self);//закраска области

//ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ принадлСТности Ρ‚ΠΎΡ‡ΠΊΠΈ области

for i:=0 to n-1 do

for j:= 0 to n-1 do

if canvas. Pixels[a[i, j]. Left+round (h/(4*n)), a[i, j].Top+round (h/(4*n))]=clred then

a[i, j]. Brush. Color:=clgreen;

btnstart.Enabled:=true;

btnfinish.Enabled:=true;

invalidate

end;

end;

//ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»Π°

if ((btnstart.Tag=1)and ((sender as tshape).Brush.Color=clyellow))

then index2:=false;

if (btnstart.Tag=1)and ((sender as tshape).Brush.Color=clgreen)

or ((btnstart.Tag=1)and ((sender as tshape).Brush.Color=clyellow))

then begin (sender as tshape).Brush.Color:=clblue;index1:=true;

btnstart.Tag:=0 end;

//ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π°

if ((btnfinish.Tag=1)and ((sender as tshape).Brush.Color=clblue))

then index1:=false;

if (btnfinish.Tag=1)and ((sender as tshape).Brush.Color=clgreen)

or ((btnfinish.Tag=1)and ((sender as tshape).Brush.Color=clblue))

then begin btnfinish. Tag:=0;index2:=true;

(sender as tshape).Brush.Color:=clyellow end;

if (index1=true) and (index2=true) then btnGraph. Enabled:=true;

end;

procedure TForm1. FormCreate (Sender: TObject);

var i, j, n:integer;

begin

k:=0;

panel1.Tag:=0;

btnstart.Enabled:=false;

btnfinish.Enabled:=false;

btnGraph.Enabled:=false;

n:=nMaxShape;

//self.WindowState:=wsMaximized;

for i:=0 to n-1 do

for j:=0 to n-1 do begin

a[i, j]: =tshape.Create (self);

a[i, j].Shape:=stcircle;

a[i, j].Parent:=self;

a[i, j].Brush.Color:=clwhite;

a[i, j].Height:=41;

a[i, j].Width:=41;

a[i, j].Top:=round (i*100/n);

a[i, j].Left:=round (j*100/n);

a[i, j].onmousedown:=form1.vershini;

WriteLn (wgraph.fout, i:3,j:3);

a[i, j].Hide;

end;

end;

//постановка Π½Π°Ρ‡Π°Π»Π°

procedure TForm1. btnstartClick (Sender: TObject);

var i, j: integer;

begin

index1:=false;

btnstart.Tag:=1;

for i:=0 to n-1 do

for j:= 0 to n-1 do

if a[i, j]. Brush. Color=clblue then

a[i, j]. Brush. Color:=clgreen

end;

//постановка ΠΊΠΎΠ½Ρ†Π°

procedure TForm1. btnfinishClick (Sender: TObject);

var i, j: integer;

begin

index2:=false;

btnfinish.Tag:=1;

for i:=0 to n-1 do

for j:= 0 to n-1 do

if a[i, j]. Brush. Color=clyellow then

a[i, j]. Brush. Color:=clgreen

end;

procedure TForm1. FormPaint (Sender: TObject);

var i: integer;

begin

if k=m then begin

with canvas do begin

setlength (tochka, m);

for i:=0 to m-1 do begin

tochka[i]. X:=integer (vershina[i].x^)+round (h/(4*n));

tochka[i].Y:=integer (vershina[i].y^)+round (h/(4*n));

end;

Pen.Color:=clred;

Polygon (tochka);

brush.color:=clred;

end;

end;

DrawWay ();//Π²Ρ‹Π·ΠΎΠ² рисования ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ

end;

function TForm1. min (x, y: integer):integer;

begin

if x

end;

procedure TForm1. FormResize (Sender: TObject);

var i, j: integer;

begin

h:=form1.min (Form1.ClientWidth-Panel1.Width, Form1. ClientHeight);

for i:=0 to n-1 do

for j:=0 to n-1 do begin

a[i, j]. Top:=round (i*h/n);

a[i, j].Left:=round (j*h/n);

end;

Invalidate;

end;

//созданиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ для Π³Ρ€Π°Ρ„Π°

procedure TForm1. matriza ();

var i, j: integer;

begin

for i:=-1 to n do

for j:=-1 to n do matr[i, j]: =False;

for i:=0 to n-1 do

for j:=0 to n-1 do begin

if a[i, j]. Brush. Color=clWhite then matr[i, j]: =false

else matr[i, j]: =true;

if a[i, j]. Brush. Color=clBlue then begin

nachialo.x:=i;

nachialo.y:=j;

end;

if a[i, j]. Brush. Color=clYellow then begin

konez.x:=i;

konez.y:=j;

end;

end;

end;

procedure TForm1. btnGraphClick (Sender: TObject);

var i, j: integer;

begin

matriza ();

wGraph.find (matr, nachialo, konez, n);

for i:=0 to n-1 do

for J:=0 to n-1 do

if a[i, j]. Brush. Color=rgb (0,255,0)

then a[i, j]. Brush. Color:=clGreen;

Invalidate;

end;

//ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° рисования ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ

procedure TForm1. DrawWay;

var i, ik, jk: integer;

begin

for i:=1 to wGraph. ny do begin

ik:=wGraph.yWay[i]. x;

jk:=wGraph.yWay[i].y;

a[ik, jk].Brush.Color:=RGB (0,255,0);

end;

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ (руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ)

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ прилоТСния примСнялся принятый Π² ΡΡ€Π΅Π΄Π΅ Delphi ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… использовался структурный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ прилоТСния.

Окно интСрфСйса прилоТСния прСдставлСно Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ поля Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ.

Π”Π°Π»Π΅Π΅ ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ старт формируСтся ΠΏΠΎΠ»Π΅ Shape’ΠΎΠ² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ размСрности. Кликами ΠΌΡ‹ΡˆΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠΎΡ€Π½Ρ‹Π΅ Shape Π² ΠΊΠΎΠ»-Π²Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π² ΠΏΠΎΠ»Π΅ «ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ».

ПослС Π²Ρ‹Π±ΠΎΡ€Π° всСх ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ отобраТаСтся построСнная Π½Π° Π½ΠΈΡ… ΠΎΠ±Π»Π°ΡΡ‚ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† сначала Π½Π°ΠΆΠ°Π² Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π° Π½ΡƒΠΆΠ½Ρ‹ΠΉ Shape. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΡΡ‚ΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»Π° ΠΈ ΠΊΠΎΠ½Ρ†Π°.

По Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π Π°ΡΡ‡Ρ‘Ρ‚» Π±ΡƒΠ΄Π΅Ρ‚ построСн ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Π½Π½Ρ‹ΠΌ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΈ ΠΊΠΎΠ½Ρ†ΠΎΠΌ ΠΎΠ½ Π²ΠΎΠΎΠ±Ρ‰Π΅ сущСствуСт. Для пСрСрасчёта с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π°Ρ‡Π°Π»Π° ΠΈ ΠΊΠΎΠ½Ρ†Π° слСдуСт ΠΈΡ… Π·Π°Π½ΠΎΠ²ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π Π°ΡΡ‡Ρ‘Ρ‚». Для измСнСния области Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠΠΎΠ²Ρ‹ΠΉ» ΠΈ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ опСрациям сначала.

ВСстовый ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ПолоТим Ρ€Π°Π·ΠΌΠ΅Ρ€ поля Ρ€Π°Π²Π½Ρ‹ΠΌ 20 ΠΈ ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ 10. ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΠΌ Π²ΠΎΠ³Π½ΡƒΡ‚Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. Π’Ρ‹Π±Π΅Ρ€Π΅ΠΌ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ ΠΏΡ€ΡΠΌΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ имСлись Ρ‚ΠΎΡ‡ΠΊΠΈ, Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ области.

Π‘ΠΌΠ΅Π½ΠΈΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΠΈ.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ