ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π±ΠΎΡ‚Π° со списками

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

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ наслСдования позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ классы Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ. Класс, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаётся Π½ΠΎΠ²Ρ‹ΠΉ класс, называСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ) классом, Π° Π½ΠΎΠ²Ρ‹ΠΉ — ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ (наслСдником). НСпосрСдствСнным Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом называСтся Ρ‚Π°ΠΊΠΎΠΉ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΠΏΠΈΡΠΎΠΊ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ класса. Π›ΡŽΠ±ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΡΡ‚Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π±ΠΎΡ‚Π° со списками (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ГосударствСнноС ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ образования «ΠœΠΎΡΠΊΠΎΠ²ΡΠΊΠΈΠΉ государствСнный тСхничСский унивСрситСт ΠΈΠΌ. Π.Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°»

ΠšΠ°Π»ΡƒΠΆΡΠΊΠΈΠΉ Ρ„ΠΈΠ»ΠΈΠ°Π» Π€Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚" Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Наук"

ΠšΠ°Ρ„Π΅Π΄Ρ€Π° «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π­Π’Πœ, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ» (ЀН1-КЀ) ΠšΠ£Π Π‘ΠžΠ’ΠΠ― Π ΠΠ‘ΠžΠ’Π ΠŸΠž КУРБУ: «ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π• ΠΠ Π‘++»

На Ρ‚Π΅ΠΌΡƒ: «Π Π°Π±ΠΎΡ‚Π° со ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ»

ΠšΠ°Π»ΡƒΠ³Π° — 2008

АННОВАЦИЯ

Бписок — это динамичСская структура, ΠΈΠ½Ρ‹ΠΌΠΈ словами, массив Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Бписки ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСхнологиях. Π’ Ρ‚ΠΎΠΌ числС, Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ машинной Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ для описания графичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ². Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, нСкоторая гСомСтричСская модСль ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСна списком Π²Π΅Ρ€ΡˆΠΈΠ½, Π»ΠΈΠ½ΠΈΠΉ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² любой слоТности.

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдставляСт собой Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ графичСскиС изобраТСния, Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π»Π΅ΠΆΠ°Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ графичСскиС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π»ΠΈΠ½ΠΈΠΈ, ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ ΠΈ ΠΊΡ€ΠΈΠ²Ρ‹Π΅ Π‘Π΅Π·ΡŒΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ части ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ВсС графичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ прСдставляСтся списком Π»ΠΈΠ½ΠΈΠΉ. ВсС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ — это наглядноС прСдставлСниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ со ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ.

Π˜Π‘Π‘Π›Π•Π”ΠžΠ’ΠΠ’Π•Π›Π¬Π‘ΠšΠΠ― ЧАБВЬ

1.1 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько классов, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ со ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти классы ΠΊ Π·Π°Π΄Π°Ρ‡Π΅ построСния гСомСтричСских Ρ„ΠΈΠ³ΡƒΡ€, Ρ‚Π΅ΠΌ самым продСмонстрировав ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ.

1.2 Бпособы Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стСк (ΠΎΠ½ ΠΏΡ€Π΅Π΄ΡΡ‚авляСт собой список Ρ‚ΠΈΠΏΠ° LIFO, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ послСдний Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт считываСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ), Π° Ρ‚Π°ΠΊΠΆΠ΅ обратная стСку динамичСская структура — ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ (FIFO). Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования для облСгчСния способа Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ: ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ классов (для записи Π² ΡΠΏΠΈΡΠΎΠΊ элСмСнтов Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°), наслСдованиС (для сокращСния объСма ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°), Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ пСрСопрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… классов), абстрактный класс (для ΠΎΠ±Ρ‰Π΅Π³ΠΎ описания основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ).

1.3 ИсслСдованиС поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ

1.3.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ стСка

Π‘Ρ‚Π΅ΠΊ прСдставляСт собой список Ρ‚ΠΈΠΏΠ° LIFO, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ послСдний Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт считываСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ. Для создания стСка Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ структура List, содСрТащая ΠΏΠΎΠ»Π΅ ссылки Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ поля. Для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стСка Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ 2 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ Ρ‚ΠΈΠΏΠ° List: p (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт) ΠΈ top (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ списка). ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ элСмСнта Π² ΡΡ‚Π΅ΠΊ, Π½ΠΎΠ²ΠΎΠΌΡƒ элСмСнту присваиваСтся ссылка Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ стСка, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈ ΠΎΠ½ ΡΠ°ΠΌ становится Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, стСк растСт ΠΊΠ°ΠΊ Π±Ρ‹ Π½Π°Π·Π°Π΄:

p=new list;

p->next=top;

p->inf=value;

top=p;

1.3.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΡΡ‚Π΅ΠΊ Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ элСмСнты Π² Π½Π΅ΠΉ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ порядкС, Π° Π½Π΅ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ. ΠžΠ±Ρ…ΠΎΠ΄ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄ стСка ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹. Учитывая это сходство, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΊΠ°ΠΊ наслСдника класса стСка, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Π² Π½Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создания ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ элСмСнта. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ создан Π·Π°Ρ€Π°Π½Π΅Π΅, Ρ‚ΠΎ Π·Π°Π½ΠΎΡΠΈΠΌ Π΅Π³ΠΎ созданиС Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса:

top=new list;

top->next=NULL;

p=top;

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ‚ΠΎΠΆΠ΅ отличаСтся ΠΎΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ элСмСнта Π² ΡΡ‚Π΅ΠΊ. Π—Π΄Π΅ΡΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Π° списка остаСтся Π½Π° ΡΠ²ΠΎΠ΅ΠΌ мСстС, мСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ указатСля, Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ заносятся Π² ΠΏΡ€ΡΠΌΠΎΠΌ порядкС, ΠΈ ΡΡΡ‹Π»ΠΊΠ° Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт создаСтся ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ, Π° Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ Π² ΡΡ‚Π΅ΠΊΠ΅, послС Ρ‡Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт становится Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ:

p->next=new list;

p->next->next=NULL;

p->inf=value;

p=p->next;

1.4 ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ

Π˜ΡΡΠ»Π΅Π΄ΡƒΠ΅ΠΌΡ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, особСнно Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ машинной Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π Π°Π±ΠΎΡ‚Π° со ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π° ΠΏΡ€ΠΈ построСнии графичСских ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, создании Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€, Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ памяти ΠΏΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Бписки — это основная динамичСская структура, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅.

2. КОНБВРУКВОРБКАЯ ЧАБВЬ

2.1 ОбоснованиС Π²Ρ‹Π±ΠΎΡ€Π° срСдства программирования

Для написания Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π» использован язык Borland C++ Builder 6. C++ Builder позволяСт Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C++. ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ срСдства языка C++ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Ρ„ΠΎΡ€ΠΌ, инспСктор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, администратор ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ — инструмСнты быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Ρ€Π΅ΡΡƒΡ€ΡΠ°ΠΌΠΈ. C++Builder Π²ΠΎΠΏΠ»ΠΎΡ‰Π°Π΅Ρ‚ ваТнСйшиС аспСкты ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для пользования инструмСнтС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ проСктирования, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ‚обраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΠΏΠΈΡΠΊΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. C++ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π½Π°Π΄ экзСмплярами этого Ρ‚ΠΈΠΏΠ°. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ понятиСм C++ являСтся класс. Класс — это Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, опрСдСляСмый ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π’.ΠΎ., Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, созданной Π½Π° C++, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащим ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Ρ„ункциях-Ρ‡Π»Π΅Π½Π°Ρ… этого класса.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ наслСдования позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ классы Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ. Класс, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаётся Π½ΠΎΠ²Ρ‹ΠΉ класс, называСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ) классом, Π° Π½ΠΎΠ²Ρ‹ΠΉ — ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ (наслСдником). НСпосрСдствСнным Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом называСтся Ρ‚Π°ΠΊΠΎΠΉ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΠΏΠΈΡΠΎΠΊ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ класса. Π›ΡŽΠ±ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΡΡ‚Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для Π΄Ρ€ΡƒΠ³ΠΈΡ… создаваСмых классов. Π’.ΠΎ. формируСтся Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов, Π° ΠΏΡ€ΠΈ объявлСнии ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом.

Π’ ΡΠ·Ρ‹ΠΊΠ΅ сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ³ΠΎ наслСдования. ΠŸΡ€ΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠΌ наслСдовании Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ являСтся ΠΎΠ΄ΠΈΠ½ класс, Π° ΠΏΡ€ΠΈ мноТСствСнном наслСдовании Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ классами Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ нСсколько классов.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ срСдством ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ связывания Π² ΡΠ·Ρ‹ΠΊΠ΅ Π‘++.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ называСтся функция, которая Π΅Ρ‰Π΅, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π­Ρ‚Π° тСхнология, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ откладываСтся Π΄ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, называСтся ΠΏΠΎΠ·Π΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ динамичСским связываниСм.

Для удобства Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΠΏΠΈΡΠΊΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ классов ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΌ. Π‘ ΡΡ‚ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² Π‘++ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ друТСствСнности ΠΈ ΡΠΎΠ·Π΄Π°Π½ друТСствСнный класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, опСрируя Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ абстрактного Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΎΠΉ.

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

2.2 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для создания графичСских ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»ΠΈΠ½ΠΈΠΈ). Бписок Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ всСми Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ находящихся Π² Π½Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, поиск, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° элСмСнтов.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π³Ρ€Π°Ρ„ичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ², создаваймых Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π»ΠΈΠ½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, кривая Π‘Π΅Π·ΡŒΠ΅, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ рисунка. ПослС создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ появляСтся Π½Π° ΡΠΊΡ€Π°Π½Π΅, Π° ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ Π»ΠΈΠ½ΠΈΠΉ выводится Π² ListBox-элСмСнт Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ Π»ΠΈΠ½ΠΈΠΈ.

2.3 ОписаниС логичСской структуры

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° прСдставляСт собой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π° C++ Builder 6. Для упрощСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ иСрархия классов.

Абстрактный класс Spisok содСрТит основныС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ всСм Π΅Π³ΠΎ наслСдникам, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΎΠ±Ρ‰ΠΈΠ΅ для всСх списков Π΄Π°Π½Π½Ρ‹Π΅: структура List, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ *top ΠΈ *p, чисто-Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

— add (Data value, AnsiString name). Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта с ΠΈΠΌΠ΅Π½Π΅ΠΌ «Name», содСрТащСго ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ «Data». Data — это ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠ»Π°ΡΡ Ρ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ класс списка для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Ѐункция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

— remove (int index). УдаляСт элСмСнт с ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠ²Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ «Index» ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°. Для этого создаСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠ΄Π°Π»ΡΠ΅ΠΌΡ‹ΠΉ элСмСнт, Π° ΡΡΡ‹Π»ΠΊΠ° с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта пСрСносится Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ, послС Ρ‡Π΅Π³ΠΎ, ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ ΡΠΏΠΈΡΠΊΠ° элСмСнт удаляСтся ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ стандартной ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ delete (*list). Ѐункция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

— change (int index, Data value). Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта с ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠ²Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ «Index» Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «Data».

— int count (). Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число элСмСнтов Π² ΡΠΏΠΈΡΠΊΠ΅. ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° с ΠΏΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнут ΠΊΠΎΠ½Π΅Ρ† списка. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Ρ†ΠΈΠΊΠ»Π° происходит ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ счСтчика.

— Data getvalue (int index). Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ элСмСнта с ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠ²Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ «Index». ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±Ρ…ΠΎΠ΄ списка Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнут порядковый Π½ΠΎΠΌΠ΅Ρ€ (Ρ†ΠΈΠΊΠ» с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ). ПослС этого возвращаСтся ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅.

— AnsiString getname (int index). Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ имя элСмСнта с ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠ²Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ «Index». Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

— int search (AnsiString name). Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ порядковый Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта с ΠΈΠΌΠ΅Π½Π΅ΠΌ «Name».

Класс Spisok являСтся абстрактным, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π²Ρ‹ΡˆΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ чисто-Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Класс Stack — наслСдник класса Spisok. Π’ Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ всС чисто-Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΊΠ°, ΠΈΠΌ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ся описанноС Π²Ρ‹ΡˆΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Класс Queue — ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ — наслСдник класса Spisok. Π­Ρ‚ΠΎΡ‚ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡΠ²ΠΎΠΈΠΌ свойствам, Π½ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ всС ΠΆΠ΅ отличаСтся ΠΎΡ‚ ΡΡ‚Π΅ΠΊΠ° своим созданиСм ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ элСмСнтов, поэтому функция добавлСния элСмСнтов Π² ΡΡ‚ΠΎΠΌ классС пСрСопрСдСляСтся Π΅Ρ‰Π΅ Ρ€Π°Π·, ΡƒΠΆΠ΅ для ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

Класс TLine — линия. Π­Ρ‚ΠΎ основной графичСский ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ строятся ΠΈΠ· Π»ΠΈΠ½ΠΈΠΉ. Линия пСрСдаСтся Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ поля Π² ΠΊΠ»Π°ΡΡΡ‹ списков. Линия ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько свойств:

— p1, p2 — Ρ‚ΠΎΡ‡ΠΊΠΈ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ 2 ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹: x ΠΈ y. Π­Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π»ΠΈΠ½ΠΈΠΈ (ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°). Π’ΠΎΡ‡ΠΊΠ° описываСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ структурой point.

— Color — Ρ†Π²Π΅Ρ‚ Π»ΠΈΠ½ΠΈΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартный Ρ‚ΠΈΠΏ C++ Builder — TColor.

— Secondary — логичСская пСрСмСнная, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ, являСтся Π»ΠΈ данная линия Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ для построСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π»ΠΈΠ±ΠΎ ΠΎΠ½Π° основная. Для Π±ΠΎΠ»Π΅Π΅ наглядного прСдставлСния способа построСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса TLine:

— setline (point p1, point p2, long int col, bool sec). УстанавливаСт значСния свойств Π»ΠΈΠ½ΠΈΠΈ Π² ΡΠΎΠΎΡ‚вСтствии с ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

— point cut (float k). Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ Π½Π° Π»ΠΈΠ½ΠΈΠΈ, которая находится Π½Π° Ρ€Π°ΡΡΡ‚оянии, Ρ€Π°Π²Π½ΠΎΠΌ k*<οΏ½Π΄Π»ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ> ΠΎΡ‚ Π΅Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ†Π°.

Класс BCurve — ΠšΡ€ΠΈΠ²Π°Ρ Π‘Π΅Π·ΡŒΠ΅. Π‘Ρ€Π΅Π΄ΠΈ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: имя, Ρ†Π²Π΅Ρ‚ основных ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ, 2 ΠΎΠΏΠΎΡ€Π½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΊΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ гладкости k (Ρ‡Π΅ΠΌ большС коэффициСнт, Ρ‚Π΅ΠΌ большС линия ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Π»ΠΎΠΌΠ°Π½ΡƒΡŽ. ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ k=0.99, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ — 0.01. ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ k=0.25). Класс ΠΈΠΌΠ΅Π΅Ρ‚ 2 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

— queue Create (float, Tline, Tline, TColor, TColor, bool, AnsiString). Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список Π»ΠΈΠ½ΠΈΠΉ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… созданной ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅.

— queue Load ().Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список Π»ΠΈΠ½ΠΈΠΉ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… созданной ΠΏΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ установлСнным ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅.

Класс TRectangle — ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ список ΠΈΠ· 4-Ρ… Π»ΠΈΠ½ΠΈΠΉ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: queue Create (int x1, int y1, int x2, int y2, TColor col).

2.4 АбстрактныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

АВД Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, опрСдСляСмый Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π°Π΄ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π±Π΅Π·ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡΠΏΠΎΡΠΎΠ±Ρƒ прСдставлСния этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

2.4.1 ADT Spisok

Π”Π°Π½Π½Ρ‹Π΅

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ списка элСмСнтов ΠΈ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт;

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ список элСмСнтов;

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Add:

Π’Ρ…ΠΎΠ΄: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, имя;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта Π² ΡΠΏΠΈΡΠΎΠΊ;

Π’Ρ‹Ρ…ΠΎΠ΄: Π½Π΅Ρ‚;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

Remove:

Π’Ρ…ΠΎΠ΄: порядковый Π½ΠΎΠΌΠ΅Ρ€;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°;

Π’Ρ‹Ρ…ΠΎΠ΄: Π½Π΅Ρ‚;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

Search:

Π’Ρ…ΠΎΠ΄: имя;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: поиск элСмСнта Π² ΡΠΏΠΈΡΠΊΠ΅;

Π’Ρ‹Ρ…ΠΎΠ΄: порядковый Π½ΠΎΠΌΠ΅Ρ€ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

Change:

Π’Ρ…ΠΎΠ΄: порядковый Π½ΠΎΠΌΠ΅Ρ€, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ с ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ;

Π’Ρ‹Ρ…ΠΎΠ΄: Π½Π΅Ρ‚;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

Count:

Π’Ρ…ΠΎΠ΄: Π½Π΅Ρ‚;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: подсчСт количСства элСмСнтов Π² ΡΠΏΠΈΡΠΊΠ΅;

Π’Ρ‹Ρ…ΠΎΠ΄: количСство элСмСнтов Π² ΡΠΏΠΈΡΠΊΠ΅;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

Getvalue:

Π’Ρ…ΠΎΠ΄: порядковый Π½ΠΎΠΌΠ΅Ρ€;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ поля элСмСнта;

Π’Ρ‹Ρ…ΠΎΠ΄: ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ элСмСнта;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

Getname:

Π’Ρ…ΠΎΠ΄: порядковый Π½ΠΎΠΌΠ΅Ρ€;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ элСмСнта;

Π’Ρ‹Ρ…ΠΎΠ΄: имя элСмСнта;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

ΠšΠΎΠ½Π΅Ρ† ADT Spisok

2.4.2 ADT Tline

Π”Π°Π½Π½Ρ‹Π΅

2 ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ†Π²Π΅Ρ‚, Ρ‚ΠΈΠΏ Π»ΠΈΠ½ΠΈΠΈ;

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Setline:

Π’Ρ…ΠΎΠ΄: 2 ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ†Π²Π΅Ρ‚, Ρ‚ΠΈΠΏ Π»ΠΈΠ½ΠΈΠΈ;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: установка Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°;

Π’Ρ‹Ρ…ΠΎΠ΄: Π½Π΅Ρ‚;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

Cut:

Π’Ρ…ΠΎΠ΄: коэффициСнт k;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: вычислСниС Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Π»ΠΈΠ½ΠΈΠΈ, которая находится Π½Π° Ρ€Π°ΡΡΡ‚оянии, Ρ€Π°Π²Π½ΠΎΠΌ k*<οΏ½Π΄Π»ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ> ΠΎΡ‚ Π΅Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ†Π°;

Π’Ρ‹Ρ…ΠΎΠ΄: Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π»ΠΈΠ½ΠΈΠΈ, которая находится Π½Π° Ρ€Π°ΡΡΡ‚оянии, Ρ€Π°Π²Π½ΠΎΠΌ k*<οΏ½Π΄Π»ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ> ΠΎΡ‚ Π΅Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ†Π°;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

ΠšΠΎΠ½Π΅Ρ† ADT TLine

2.4.3 ADT BCurve

Π”Π°Π½Π½Ρ‹Π΅

Π¦Π²Π΅Ρ‚ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ, 2 Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ, коэффициСнт, имя;

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Create:

Π’Ρ…ΠΎΠ΄: Π¦Π²Π΅Ρ‚ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ, 2 Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ, коэффициСнт, имя;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: созданиС ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅;

Π’Ρ‹Ρ…ΠΎΠ΄: Бписок Π»ΠΈΠ½ΠΈΠΉ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡ€ΠΈΠ²ΠΎΠΉ;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

Load:

Π’Ρ…ΠΎΠ΄: Π½Π΅Ρ‚;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: созданиС ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…;

Π’Ρ‹Ρ…ΠΎΠ΄: Бписок Π»ΠΈΠ½ΠΈΠΉ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡ€ΠΈΠ²ΠΎΠΉ;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

ΠšΠΎΠ½Π΅Ρ† ADT BCurve

2.4.4 ADT TRectangle

Π”Π°Π½Π½Ρ‹Π΅

Π½Π΅Ρ‚;

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Create:

Π’Ρ…ΠΎΠ΄: Π¦Π²Π΅Ρ‚ 4 ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΈ Ρ†Π²Π΅Ρ‚;

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅: Π½Π΅Ρ‚;

ΠŸΡ€ΠΎΡ†Π΅ΡΡ: созданиС ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°;

Π’Ρ‹Ρ…ΠΎΠ΄: Бписок Π»ΠΈΠ½ΠΈΠΉ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΡƒ;

ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΡ: Π½Π΅Ρ‚;

ΠšΠΎΠ½Π΅Ρ† ADT TRectangle

3. Π’Π•Π₯ΠΠžΠ›ΠžΠ“Π˜Π§Π•Π‘ΠšΠΠ― ЧАБВЬ

3.1 Руководство программиста

3.1.1 НазначСниС ΠΈ ΡƒΡΠ»ΠΎΠ²ΠΈΡ примСнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для создания графичСских ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… графичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ². ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, позволяСт Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ ΠΈΡ… Ρ‡Π°ΡΡ‚ΠΈ.

3.1.2 ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ систСмныС трСбования:

1) 64 Мб ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

2) 100 Кб ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ мСста Π½Π° ΠΆΡ‘стком дискС

3) ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΌΡ‹ΡˆΡŒ

4) ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма Windows 9x/ME/NT/2000/XP

3.1.3 Установка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΡƒΠΆΠ½ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ *.exe Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Editor.exe.

3.1.4 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Алгоритм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ дСйствия:

Β· Π’Ρ‹Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ.

Β· Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ мСста располоТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ рисунка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ (2 ΠΈΠ»ΠΈ 3 ΠΊΠ»ΠΈΠΊΠ°).

Β· Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ: ΠΈΡ… Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ListBox-элСмСнта ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΡ… Ρ‡Π°ΡΡ‚Π΅ΠΉ.

Β· ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ происходит ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π°.

Β· Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ мСсто располоТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, происходит Π΅Π³ΠΎ созданиС. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСдставляСт собой список Π»ΠΈΠ½ΠΈΠΉ, поэтому, для создания любого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создаСт Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ (Queue), Ссли ΠΎΠ½ Π½Π΅ Π±Ρ‹Π» создан Π΄ΠΎ ΡΡ‚ΠΎΠ³ΠΎ, ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ‚ Π² Π½Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Create (<οΏ½ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°>) ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° список Π»ΠΈΠ½ΠΈΠΉ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ списком (Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ), этот список заносится Π² ListBox-элСмСнт Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅, Π³Π΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смоТСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ.

Β· ИзмСнСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΡ… Ρ‡Π°ΡΡ‚Π΅ΠΉ Для измСнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция класса списков Change (int, Data). ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ элСмСнта ListBox’Π° (ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ-части ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°), Π² ΡΡ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ пСрСдаСтся порядковый Π½ΠΎΠΌΠ΅Ρ€ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, установлСнныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Β· Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ части Для удалСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹. Π­Ρ‚ΠΎ осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ класса списков Remove (int). Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ пСрСдаСтся порядковый Π½ΠΎΠΌΠ΅Ρ€ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ.

3.1.5 ВСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Для выполнСния тСстирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ слСдуСт произвСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

1. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» «Editor.exe».

2. Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

3. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ComboBox-элСмСнтов

4. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ 2-Ρ… ΠΈΠ»ΠΈ 3-Ρ… ΠΊΠ»ΠΈΠΊΠΎΠ² ΠΌΡ‹ΡˆΠΊΠΎΠΉ Π½Π° Π±Π΅Π»ΠΎΠΉ области Ρ„ΠΎΡ€ΠΌΡ‹

5. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для построСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Π½Π° Ρ„Π»Π°ΠΆΠΊΠ΅ «ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π»ΠΈΠ½ΠΈΠΈ». Π‘ΡŽΡ€ΠΎΡ этого Ρ„Π»Π°ΠΆΠΊΠ° ΡƒΠ±Π΅Ρ€Π΅Ρ‚ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ с ΡΠΊΡ€Π°Π½Π°

6. Π’ ListBox’Π΅ «Π’сС Π»ΠΈΠ½ΠΈΠΈ» Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ. Они Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠΌ выдСлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ

7. ΠŸΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π² ΡΠΏΠΈΡΠΊΠ΅ «ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° пСрвая линия Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΡΠΏΠΈΡΠΊΠ΅ Π²Π²Π΅Ρ€Ρ…Ρƒ

8. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Delete выдСлСнная линия удаляСтся ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°, оставляя ΠΏΡ€ΠΈ этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅. ПослС удалСния Π»ΠΈΠ½ΠΈΠΉ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π°Π΄ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ произвСсти Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Π΄ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ. ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ всСх Π»ΠΈΠ½ΠΈΠΉ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠ½ ΡΠ°ΠΌ удаляСтся ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°

9. Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

3.2 Руководство ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ приводится описаниС дСйствий ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) для достиТСния Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

3.2.1 Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» «Editor.exe».

ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄ Π’Π°ΠΌΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ:

Рис. 1. Π’ΠΈΠ΄ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния

3.2.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

— Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

- Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ComboBox-элСмСнтов

— Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ 2-Ρ… ΠΈΠ»ΠΈ 3-Ρ… ΠΊΠ»ΠΈΠΊΠΎΠ² ΠΌΡ‹ΡˆΠΊΠΎΠΉ Π½Π° Π±Π΅Π»ΠΎΠΉ области Ρ„ΠΎΡ€ΠΌΡ‹

— Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для построСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Π½Π° Ρ„Π»Π°ΠΆΠΊΠ΅ «ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π»ΠΈΠ½ΠΈΠΈ». Π‘ΡŽΡ€ΠΎΡ этого Ρ„Π»Π°ΠΆΠΊΠ° ΡƒΠ±Π΅Ρ€Π΅Ρ‚ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ с ΡΠΊΡ€Π°Π½Π°.

3.2.3 Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

— Π’ ListBox’Π΅ «Π’сС Π»ΠΈΠ½ΠΈΠΈ» Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ. Они Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠΌ выдСлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ

— ΠŸΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π² ΡΠΏΠΈΡΠΊΠ΅ «ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° пСрвая линия Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΡΠΏΠΈΡΠΊΠ΅ Π²Π²Π΅Ρ€Ρ…Ρƒ

— ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Delete выдСлСнная линия удаляСтся ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°, оставляя ΠΏΡ€ΠΈ этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅. ПослС удалСния Π»ΠΈΠ½ΠΈΠΉ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π°Π΄ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ произвСсти Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Π΄ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ. ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ всСх Π»ΠΈΠ½ΠΈΠΉ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠ½ ΡΠ°ΠΌ удаляСтся ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°

3.2.4 ИзмСнСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Для измСнСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ значСния Ρ†Π²Π΅Ρ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ComboBox-элСмСнтов.

3.2.5 Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ крСстика Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΎΠΊΠ½Π°.

3.3 БообщСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ

Вся Ρ€Π°Π±ΠΎΡ‚Π° со ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² отобраТаСтся Π½Π° ΡΠΊΡ€Π°Π½Π΅. ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠ½ ΠΏΠΎΡΠ²Π»ΡΠ΅Ρ‚ся Π½Π° ΡΠΊΡ€Π°Π½Π΅, ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ — исчСзаСт ΠΎΡ‚Ρ‚ΡƒΠ΄Π°, ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ — мСняСт Ρ†Π²Π΅Ρ‚ Π½Π° Ρ†Π²Π΅Ρ‚ выдСлСния.

1. Π”Π΅ΠΉΡ‚Π΅Π» Π₯., Π”Π΅ΠΉΡ‚Π΅Π» П. Как ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π‘++: ΠΏΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πœ.: «Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π‘ΠΈΠ½ΠΎΠΌ», 2003 Π³.

2. ΠšΠΎΠ½Π΄Ρ€Π°Ρ‚ΡŒΠ΅Π²Π° Π‘. Π”.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…: Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΊΡƒΡ€ΡΡƒ. — Πœ.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠœΠ“Π’Π£ ΠΈΠΌ. Π. Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°, 2000 Π³.

3. БтивСнс Π . Delphi. Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πœ.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π”ΠœΠš ΠŸΡ€Π΅ΡΡ, 2001.-384с.

4. РСйсдорф ΠšΠ΅Π½Ρ‚ ΠΈ Π₯СндСрсон КСн Borland C++ Builder. Освой ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ: [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс].

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π•

//—————————————————————————————————————;

#include

#pragma hdrstop

#include

#include «Unit1.h»

//—————————————————————————————————————;

#pragma package (smart_init)

#pragma resource «*.dfm»

TfrmMain *frmMain;

//==========================================

// CLASSES FOR WORK WITH LISTS. IT-41 2007

//==========================================

//*****Structures*****

struct point {

int x, y;

};//end struct

//==========================================

//1. Abstract class Spisok

//==========================================

template class spisok {

protected:

struct list {

Data inf;

AnsiString name;

list*next;

};//end struct list

list *top,*p;

public:

virtual void add (Data value, AnsiString name)=0;

virtual void remove (int index)=0;

virtual void change (int index, Data value)=0;

virtual int count ()=0;

virtual Data getvalue (int index)=0;

virtual AnsiString getname (int index)=0;

virtual int search (AnsiString name)=0;

};//end class spisok

//==========================================

//2. CLASS STACK

//==========================================

template class stack: public spisok {

public:

//***************CONSTRUCTORS************************

stack (){top=new list;top=NULL;}

~stack (){}

//***************OPERATIONS************************

int count (){

int i=0;

p=top;

while (p≠NULL){

i++;

p=p->next;

}//end while

return (i);

}//end stack count

void add (Data value, AnsiString name){

p=new list;

p->next=top;

p->inf=value;

p->name=name;

top=p;

}//end stack add

int search (AnsiString name){

int i=0;

p=top;

while (p≠NULL){

i++;

if (p->name==name) return (i);

}//end while

return (0);

}//end function

void remove (int index){

list*q;

p=top;

for (int i=1;inext;

q=p->next;

if (q==NULL) delete (q); else {p->next=p->next->next;delete (q);}

}//end stack remove

void change (int index, Data value){

p=top;

for (int i=1;inext;

p->inf=value;

}//end stack change

Data getvalue (int index){

if (index<=this->count ()){

p=top;

for (int i=1;inext;

return (p->inf);

}//end if

}//end function

AnsiString getname (int index){

p=top;

for (int i=1;inext;

return (p->name);

}//end function

void clear (){

}//end function

};//end class stack

//==========================================

//3. CLASS QUEUE

//==========================================

template class queue: public stack {

public:

queue (){top=new list;top->next=NULL;p=top;}

~queue (){}

void add (Data value, AnsiString name){

p->next=new list;

p->next->next=NULL;

p->inf=value;

p->name=name;

p=p->next;

}//end function

int count (){

int i=0;

p=top;

while (p->next≠NULL){

i++;

p=p->next;

}//end while

return (i);

}//end queue count

};//end queue class

//==========================================

//4. CLASS LINE

//==========================================

class Tline {

public:

point p1, p2;

TColor color;

bool secondary;

Tline (){color=0;secondary=0;}

~Tline (){}

void setline (point p1, point p2, long int col, bool sec);

point cut (float k);

};//end line class

//—————————————————————

point Tline: cut (float k){

point p;

p.x=p1.x+k*(p2.x-p1.x);

p.y=p1.y+k*(p2.y-p1.y);

return (p);

}//end function

void Tline: setline (point Point1, point Point2, long int col, bool sec){

p1.x=Point1.x;p1.y=Point1.y;

p2.x=Point2.x;p2.y=Point2.y;

color=col;secondary=sec;

}//end function

//==========================================

//5. CLASS Bezie Curve

//==========================================

class BCurve {

protected:

bool show_secondary;

public:

TColor color;

AnsiString Name;

TColor scol;

float k;

Tline l1, l2;

BCurve (){}

queue Create (float, Tline, Tline, TColor, TColor, bool, AnsiString);

queue Load ();

};//end BCurve Class

queue BCurve: Create (float koef, Tline line1, Tline line2, TColor col, TColor colsec, bool sec, AnsiString NameOfCurve)

{

queue L;

point p1, p2;

Tline l;

k=koef; l1=line1,l2=line2;color=col;show_secondary=sec;scol=colsec;

l1.secondary=true;l2.secondary=true;l1.color=colsec;l2.color=colsec;Name=NameOfCurve;

if (show_secondary) {L.add (l1,Name);L.add (l2,Name);}

while (!(l.p1.x==l.p2.x && l. p1.y==l.p2.y)){

p1=l1.cut (k);p2=l2.cut (k);

l.setline (p1,p2,colsec, 1);

if (show_secondary) L. add (l, Name);

l2.p1=p2;p2=l.cut (k);p1=l1.p1;

l.setline (p1,p2,color, 0);L.add (l, Name);

l1.p1=p2;l1.p2=l2.p1;

}//end while

return (L);

}//end function

queue BCurve: Load (){

return (this->Create (k, l1, l2,color, scol, show_secondary, Name));

}//end function

class TRectangle {

public:

queue Create (int x1, int y1, int x2, int y2, TColor col);

};//end rectangle class

queue TRectangle: Create (int x1, int y1, int x2, int y2, TColor col){

queue Lines;

Tline l1;

l1.p1.x=x1;l1.p1.y=y1;l1.p2.x=x2;l1.p2.y=y1;l1.color=col;l1.secondary=false;

Lines.add (l1," Rectangle");

l1.p1.x=x2;l1.p1.y=y1;l1.p2.x=x2;l1.p2.y=y2;l1.color=col;l1.secondary=false;

Lines.add (l1," Rectangle");

l1.p1.x=x2;l1.p1.y=y2;l1.p2.x=x1;l1.p2.y=y2;l1.color=col;l1.secondary=false;

Lines.add (l1," Rectangle");

l1.p1.x=x1;l1.p1.y=y2;l1.p2.x=x1;l1.p2.y=y1;l1.color=col;l1.secondary=false;

Lines.add (l1," Rectangle");

return (Lines);

}//end function

//=========

//ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

queue LineBufer;

int n=0;

Tline l1, l2;

queue Objects;

//=========

//—————————————————————————————————————;

__fastcall TfrmMain: TfrmMain (TComponent* Owner)

: TForm (Owner)

{

}

//—————————————————————————————————————;

void LoadLines (bool sec){

Tline l1;

int checkedItem=frmMain->ListBox1->ItemIndex;

frmMain->ListBox1->Clear ();

frmMain->lstObjects->Clear ();

for (int i=1;i<=LineBufer.count ();i++){

l1=LineBufer.getvalue (i);

frmMain->lblPicture->Canvas->Pen->Color=l1.color;

if ((sec && l1. secondary)||!l1.secondary){

if (l1.secondary) frmMain->lblPicture->Canvas->Pen->Style=2; else frmMain->lblPicture->Canvas->Pen->Style=0;

frmMain->lblPicture->Canvas->MoveTo (l1.p1.x, l1. p1.y);

frmMain->lblPicture->Canvas->LineTo (l1.p2.x, l1. p2.y);

}//end if

frmMain->ListBox1->Items->Add (IntToStr (l1.p1.x)+" ;" +IntToStr (l1.p1.y)+" - «+IntToStr (l1.p2.x)+» ;" +IntToStr (l1.p2.y));

}//next i

frmMain->ListBox1->ItemIndex=checkedItem;

for (int i=1;i<=Objects.count ();i++){

if (Objects.getvalue (i)==1)frmMain->lstObjects->Items->Add («Line (1 lines)»); else

if (Objects.getvalue (i)==4)frmMain->lstObjects->Items->Add («Rectangle (4 lines)»); else

frmMain->lstObjects->Items->Add («Bezie Curve („+IntToStr (Objects.getvalue (i))+“ lines)»);

}//next i

}//end function

//—————————————————————————————————————;

void __fastcall TfrmMain: lblPictureMouseDown (TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

if (cboObject->Text=="ΠšΡ€ΠΈΠ²Π°Ρ Π‘Π΅Π·ΡŒΠ΅"){

n++;

if (n==1) {l1.p1.x=X;l1.p1.y=Y;}

if (n==2) {l1.p2.x=X;l1.p2.y=Y;l2.p1.x=X;l2.p1.y=Y;}

if (n==3) {

BCurve CurveBufer;

queue Lines;

int firstNumber=0;

l2.p2.x=X;l2.p2.y=Y;

Lines=CurveBufer.Create (0.25,l1,l2,clbColor->Selected, clbSecond->Selected, 1," Bezie");

n=0;

firstNumber=LineBufer.count ();

for (int i=0;i<=Lines.count ();i++) LineBufer. add (Lines.getvalue (i)," Bezie");

LoadLines (chkSecondary->Checked);

firstNumber=LineBufer.count ()-firstNumber;

Objects.add (firstNumber," Bezie");

lstObjects->Items->Add («Bezie Curve („+IntToStr (firstNumber)+“ lines)»);

}//end if n==3

}//end if Curve

if (cboObject->Text=="Линия"){

n++;

frmMain->Canvas->Pen->Color=clbColor->Selected;

if (n==1) {l1.p1.x=X;l1.p1.y=Y;}

if (n==2) {

l1.p2.x=X;l1.p2.y=Y;

LineBufer.add (l1," «);

Objects.add (1," Line");

LoadLines (chkSecondary->Checked);

n=0;

}//end if n==2

}//End if Line

if (cboObject->Text=="ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ"){

n++;

queue Lines;

TRectangle Rect;

if (n==1) {l1.p1.x=X;l1.p1.y=Y;}

if (n==2) {

l1.p2.x=X;l1.p2.y=Y;

Lines=Rect.Create (l1.p1.x, l1. p1.y, l1. p2.x, l1. p2.y, clbColor->Selected);

for (int i=0;i<=Lines.count ();i++) LineBufer. add (Lines.getvalue (i)," «);

Objects.add (4," Rectangle");

LoadLines (chkSecondary->Checked);

n=0;

}//end if n==2;

}//end if rectangle;

}

//—————————————————————————————————————;

void __fastcall TfrmMain: chkSecondaryClick (TObject *Sender)

{

frmMain->lblPicture->Refresh ();

LoadLines (chkSecondary->Checked);

}

//—————————————————————————————————————;

void __fastcall TfrmMain: clbColorChange (TObject *Sender)

{

Tline l1;

int begin=0;

for (int i=0;iItemIndex;i++)begin+=Objects.getvalue (i);

for (int i=begin;i<=begin+Objects.getvalue (lstObjects->ItemIndex+1);i++){

l1=LineBufer.getvalue (i);

if (!l1.secondary){

l1.color=clbColor->Selected;

LineBufer.change (i, l1);

}//end if

}//next i

LoadLines (chkSecondary->Checked);

}

//—————————————————————————————————————;

void __fastcall TfrmMain: clbSecondChange (TObject *Sender)

{

Tline l1;

int begin=0;

for (int i=0;iItemIndex;i++)begin+=Objects.getvalue (i);

for (int i=begin;i<=begin+Objects.getvalue (lstObjects->ItemIndex+1);i++){

l1=LineBufer.getvalue (i);

if (l1.secondary){

l1.color=clbSecond->Selected;

LineBufer.change (i, l1);

}//end if

}//next i

LoadLines (chkSecondary->Checked);

}

//—————————————————————————————————————;

int WhichObject (int number) {

int object=0;

int i=0;

while (i

if (object==0) object=1;

return (object);

}//end function

//—————————————————————————————————————;

void __fastcall TfrmMain: ListBox1Click (TObject *Sender)

{

Tline l1;

l1=LineBufer.getvalue (ListBox1->ItemIndex+1);

frmMain->lblPicture->Refresh ();

LoadLines (chkSecondary->Checked);

for (int i=2;i>0;i—){

frmMain->lblPicture->Canvas->Pen->Color=clbSelect->Selected;

frmMain->lblPicture->Canvas->Ellipse (l1.p1.x-i, l1. p1.y-i, l1. p1.x+i, l1. p1.y+i);

frmMain->lblPicture->Canvas->Ellipse (l1.p2.x-i, l1. p2.y-i, l1. p2.x+i, l1. p2.y+i);

frmMain->lblPicture->Canvas->MoveTo (l1.p1.x, l1. p1.y);

frmMain->lblPicture->Canvas->LineTo (l1.p2.x, l1. p2.y);

}//next

}

//—————————————————————————————————————;

void __fastcall TfrmMain: ListBox1KeyDown (TObject *Sender, WORD &Key,

TShiftState Shift)

{

if (Key==46){

int object=WhichObject (ListBox1->ItemIndex+1);

frmMain->lblPicture->Refresh ();

int z=ListBox1->ItemIndex;

LineBufer.remove (ListBox1->ItemIndex+1);ListBox1->Items->Delete (ListBox1->ItemIndex);

ListBox1->ItemIndex=z;

Objects.change (object, Objects. getvalue (object)-1);

if (Objects.getvalue (object)==0) {Objects.remove (object);lstObjects->Items->Delete (object-1);}

LoadLines (chkSecondary->Checked);

}//end if

}

//—————————————————————————————————————;

void __fastcall TfrmMain: lstObjectsClick (TObject *Sender)

{

int begin=0;

for (int i=0;iItemIndex;i++)begin+=Objects.getvalue (i);

ListBox1->ItemIndex=begin;

}

//—————————————————————————————————————;

void __fastcall TfrmMain: lblPictureMouseMove (TObject *Sender,

TShiftState Shift, int X, int Y)

{

lblCoords->Caption=IntToStr (X)+"; «+IntToStr (Y);

}

//—————————————————————————————————————;

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