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

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма расчСтов ΠΏΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°ΠΌ

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

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

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма расчСтов ΠΏΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°ΠΌ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

БСлорусский Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ тСхничСский унивСрситСт ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΉ институт дистанционного образования ΠšΠ°Ρ„Π΅Π΄Ρ€Π° ΠŸΠžΠ’Π’ ΠΈ ΠΠ‘ ΠšΠ£Π Π‘ΠžΠ’ΠžΠ™ ΠŸΠ ΠžΠ•ΠšΠ’ ΠΏΠΎ ΠΊΡƒΡ€ΡΡƒ «Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π­Π’Πœ «

На Ρ‚Π΅ΠΌΡƒ

" Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма расчСтов ΠΏΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°ΠΌ «

Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ ст. Π³Ρ€.417 313 Π― Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π ΠΎΠΌΠ°Π½ΠΎΠ² А.Π’.

Минск 2005 Π³.

Π‘Π΅Π· использования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… элСмСнтами Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ ΠΎΠ±Ρ…одится Π½ΠΈ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для элСктронных Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… машин. Π›ΡŽΠ±Ρ‹Π΅ конструкции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Ρ‚. Π΄. — ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² ΡΠ΅Π±Ρ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚Π΅ΠΉ. ЛогичСская схСма структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ собой ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ взаимосвязанных Π΄Π°Π½Π½Ρ‹Ρ…, опрСдСляСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области (ΠΈΠ»ΠΈ Π΅Π΅ ΡΠΎΡΡ‚Π°Π²Π½ΠΎΠΉ части), Π½ΠΎ ΠΈ, Ρ‡Ρ‚ΠΎ самоС Π³Π»Π°Π²Π½ΠΎΠ΅, построСниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, примСняСмого для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этой структуры. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΊΠ°ΠΊ Π²Π΅ΠΊΡ‚ΠΎΡ€ записСй, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ичСски ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ список. Как ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Н. Π’ΠΈΡ€Ρ‚, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π½Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ структуры Π΄Π°Π½Π½Ρ‹Ρ…, логичСскоС ΠΈ Ρ„изичСскоС построСниС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π³Π»Π°Π²Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠΌΠΈ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

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

Π’Π΅ΠΌΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° — «Π˜Π½Ρ„ормационная систСма расчётов ΠΏΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°ΠΌ». ΠŸΡ€ΠΈ этом ΠΏΠΎ Π·Π°Π΄Π°Π½ΠΈΡŽ ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ структуру Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½ΡƒΡŽ сортировку Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΌ Π±Ρ‹Π»Π° взята ИБР Delphi, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ с Π±ΠΎΠ»ΡŒΡˆΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт практичСски Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ возмоТности ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов.

НиТС я ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ обоснования использования срСды Delphi для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Delphi — это комбинация Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ:

Β· Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ компилятор Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Β· ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная модСль ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Β· Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ (Π°, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚Π½ΠΎΠ΅) построСниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ².

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ прСдставляСт собой инструмСнт для управлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой расчСтов ΠΏΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°ΠΌ для коммСрчСской Π½Π°ΡƒΡ‡Π½ΠΎ-производствСнной ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ.

1. Бостав DELPHI-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

1.1. Бостав ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Form1. На Ρ„ΠΎΡ€ΠΌΠ΅ располоТСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (см. рис1):

— ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ MainMenu1 — осущСствляСт ΠΎΠ±Ρ‰Π΅Π΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, Π² Ρ‡Π°ΡΡ‚ности сохранСниС Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ², Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

— ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ BtnDel — ΠΊΠ½ΠΎΠΏΠΊΠ° Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹ для удалСния записСй Π΄Π°Π½Π½Ρ‹Ρ….

— ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ txtSearch — ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° искомых Π΄Π°Π½Π½Ρ‹Ρ….

— ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ btnSearch — ΠΊΠ½ΠΎΠΏΠΊΠ° для Π½Π°Ρ‡Π°Π»Π° поиска Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠΎΠ»Π΅ txtSearch.

— ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ CheckBox1 — соотвСтствСнно для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ рСдактирования Π΄Π°Π½Π½Ρ‹Ρ….

— ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ PageControl1 — содСрТит Π²ΠΊΠ»Π°Π΄ΠΊΠΈ TabSheet 1?4 Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ (соотвСтствСнно «Π₯Π”», «Π’Π’К», «Π‘ΠΠΠš» ΠΈ «ΠΠ΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°»).

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TabSheet 1?4 содСрТат Π² ΡΠ΅Π±Π΅ элСмСнты Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (соотвСтствСнно «XDgrid», «WTKgrid», «BANKgrid» ΠΈ «NDgrid»). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, TabSheet 4 содСрТит Π΅Ρ‰Ρ‘ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ GroupBox1 c ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ btnSort1 ΠΈ btnSort2 для сортировки списка Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ² ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ количСства Ρ‡Π»Π΅Π½ΠΎΠ² Π’Π’Πš.

Рис. 1 — Главная Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

1.2 ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, входящиС Π² ΡΠΎΡΡ‚Π°Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса

Бписок ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° содСрТит ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Unit1 — ΠΌΠΎΠ΄ΡƒΠ»ΡŒ интСрфСйсной Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Бписок основных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, входящих Π² ΡΠΎΡΡ‚Π°Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса:

— procedure LoadFromFiles — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

— procedure InitGrids — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΡ… Π² ΡΠΎΠΎΡ‚вСтствии с ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ.

— procedure FillArrays — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° заполнСния массивов Π² ΡΠΎΠΎΡ‚вСтствии с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ….

— procedure SaveInFiles — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° сохранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² Ρ„Π°ΠΉΠ»Ρ‹.

— procedure FillNDgrid — Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ².

— procedure Sort — ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ сортировка Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ² NDgrid ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ.

— procedure Sort2- ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ сортировка Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ² NDgrid ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ.

— procedure SweepRows (r1,r2:word) — Π·Π°ΠΌΠ΅Π½Π° мСстами строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ² NDgrid ΠΏΡ€ΠΈ сортировкС.

— procedure SaveRow (var sr: SRow;r:word) — сохранСниС Π·Π°ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ строки.

2. БтатичСскиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… объявлСно 5 ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… строковых массива Ρ‚ΠΈΠΏΠ° String[N], Π³Π΄Π΅ N?255.

XDar: array [1.70] of String[30];

WTKar: array [1.150] of String[30];

BANKar: array [1.50] of String[30];

SRow=array [0.5] of String[30];

s: array [0.5] of String[30];

Имя массива

Π’ΠΈΠΏ

Π Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ…

XDar

String[N]

(30+1)*70=2170

WTKar

String[N]

(30+1)*150=4650

BANKar

String[N]

(30+1)*50=1550

SRow

String[N]

(30+1)*6=186

S

String[N]

(30+1)*6=186

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ΄ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

nCol, i, j, y, x, n, n1, n2, c Ρ‚ΠΈΠΏΠ° integer (каТдая ΠΏΠΎ 4 Π±Π°ΠΉΡ‚Π°);

l, r Ρ‚ΠΈΠΏΠ° word (каТдая ΠΏΠΎ 2 Π±Π°ΠΉΡ‚Π°);

st, code, s ΠΈΠΌΠΏΠ° string[30] (каТдая ΠΏΠΎ 30+1=31 Π±Π°ΠΉΡ‚).

3. ЛогичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ…

Π“Π»Π°Π²Π½Ρ‹ΠΌ элСмСнтом ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠΉ структурой Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ строковыС массивы XDar, WTKar ΠΈ BANKar Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ 70, 150 ΠΈ 50 соотвСтствСнно.

ОбъявлСниС массива выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

XDar: array [1.70] of String[30];

WTKar: array [1.150] of String[30];

BANKar: array [1.50] of String[30];

Массив (array) — это структура Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±Ρ‰ΠΈΠΌ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ всСх массивов всСх Ρ‚ΠΈΠΏΠΎΠ² являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прямого доступа ΠΊ ΠΈΡ… ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ со ΡΡ‚ΠΎΡ€ΠΎΠ½Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ обСспСчиваСтся Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ элСмСнтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ индСкса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

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

ЛогичСская схСма структуры массива XDar:

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 1 Π±Π°ΠΉΡ‚ памяти. БоотвСтствСнно массив XDar Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ (30+1)*70=2170 Π±Π°ΠΉΡ‚.

ЛогичСская схСма структуры массива WTKar:

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 1 Π±Π°ΠΉΡ‚ памяти. БоотвСтствСнно массив WTKar Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ (30+1)*150=4650 Π±Π°ΠΉΡ‚.

ЛогичСская схСма структуры массива BANKar:

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 1 Π±Π°ΠΉΡ‚ памяти. БоотвСтствСнно массив BANKar Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ (30+1)*50=1550 Π±Π°ΠΉΡ‚.

4. Алгоритмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ основных структур

Основной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ структуры Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии являСтся ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ сортировка (ΠΏΠΎ Π·Π°Π΄Π°Π½ΠΈΡŽ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅).

Π”Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ сортировки Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ся для нСбольшого числа элСмСнтов, ΠΊΠ°ΠΊ, скаТСм, Π² Π½Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии. Однако для большого количСства элСмСнтов ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ сортировка оказываСтся ΠΎΡ‡Π΅Π½ΡŒ эффСктивной, ΠΈ Ρ‡Π΅ΠΌ большС число элСмСнтов, Ρ‚Π΅ΠΌ эффСктивнСС.

ΠŸΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ сортировка Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Nβ€’Log2N ΡˆΠ°Π³ΠΎΠ² Π΄Π°ΠΆΠ΅ Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС. Π’Π°ΠΊΠΈΠ΅ ΠΎΡ‚Π»ΠΈΠ½Ρ‹Π΅ характСристики для Ρ…ΡƒΠ΄ΡˆΠ΅Π³ΠΎ случая — ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… Π²Ρ‹Π³ΠΎΠ΄Π½Ρ‹Ρ… качСств ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½ΠΎΠΉ сортировки.

Но Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° сортиовки, Π²ΠΈΠ΄ΠΈΠΌΠΎ, большС всСго подходят случаи, ΠΊΠΎΠ³Π΄Π° элСмСнты Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ рассортированы Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, Ρ‚. Π΅. для Π½Π΅Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ нССстСствСнноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС Ρ„Π°Π·Π° построСния ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… пСрСсылок.

ΠŸΠΈΡ€Π°ΠΌΠΈΠ΄Π° опрСдСляСтся ΠΊΠ°ΠΊ нСкоторая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

K[L], …, K[R], такая, Ρ‡Ρ‚ΠΎ

K[i]? K[2i] & K[i]? K[2i + 1], (1)

для всякого i = L, …, R/2. Если имССтся массив К[1], К[2], …, К[R], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ индСксируСтся ΠΎΡ‚ 1, Ρ‚ΠΎ ΡΡ‚ΠΎΡ‚ массив ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ прСдставлСния ΠΏΡ€ΠΈ R=10 ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.

Рис. 2 — Массив ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, прСдставлСнный Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°

Π”Π΅Ρ€Π΅Π²ΠΎ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2, прСдставляСт собой ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ i = 1, 2, …, R/2 выполняСтся условиС (1). ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов с ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ i = R/2+1, R/2+2, …, R (Π»ΠΈΡΡ‚ΡŒΠ΅Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°), являСтся ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄ΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для этих индСксов Π² ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π΅ Π½Π΅Ρ‚ сыновСй.

Бпособ построСния ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹ «Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ мСстС» Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π . Π€Π»ΠΎΠΉΠ΄ΠΎΠΌ. Π’ Π½Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° просСивания (sift), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ рас-смотрим Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π° ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π° с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ К[3], К[4], …, К[10] Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт К[2] для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈ-Ρ€Π΅Π½Π½ΡƒΡŽ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ К[2], К[3], К[4], …, К[10]. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ К[3], …, К[10], ΠΏΠΎΠΊΠ°Ρ‡Π°Π½Π½ΡƒΡŽ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3, ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠΌ эту ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ «Π²Π»Π΅Π²ΠΎ», Π΄ΠΎΠ±Π°Π²ΠΈΠ² элСмСнт К[2] =44.

Рис. 3 — ΠŸΠΈΡ€Π°ΠΌΠΈΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ добавляСтся ΠΊΠ»ΡŽΡ‡ К[2]=44

ДобавляСмый ΠΊΠ»ΡŽΡ‡ К[2] просСиваСтся Π² ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ: Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сравниваСтся с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΡƒΠ·Π»ΠΎΠ²-сыновСй, Ρ‚. Π΅. со Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ 15 ΠΈ 28. Если Π±Ρ‹ ΠΎΠ±Π° ΡΠ»ΡŽΡ‡Π°-сына Π±Ρ‹Π»ΠΈ большС, Ρ‡Π΅ΠΌ просСиваСмый ΠΊΠ»ΡŽΡ‡, Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ остался Π±Ρ‹ Π½Π° ΠΌΠ΅ΡΡ‚Π΅, ΠΈ ΠΏΡ€ΠΎΡΠ΅ΠΈΠ²Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ. Π’ Π½Π°ΡˆΠ΅ΠΌ случаС ΠΎΠ±Π° ΠΊΠ»ΡŽΡ‡Π°-сына мСньшС, Ρ‡Π΅ΠΌ 44, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, вставляСмый ΠΊΠ»ΡŽΡ‡ мСняСтся мСстами с Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π² ΡΡ‚ΠΎΠΉ ΠΏΠ°Ρ€Π΅, Ρ‚. Π΅. с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ 15. ΠšΠ»ΡŽΡ‡ 44 записываСтся Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ К[4], Π° ΠΊΠ»ΡŽΡ‡ 15 — Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ К[2]. ΠŸΡ€ΠΎΡΠ΅ΠΈΠ²Π°Π½ΠΈΠ΅ продолТаСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ»ΡŽΡ‡ΠΈ-ΡΡ‹Π½ΠΎΠ²ΡŒΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта К[4] ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ мСньшС Π΅Π³ΠΎ — происходит ΠΎΠ±ΠΌΠ΅Π½ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ 44 ΠΈ 18. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.

Π’ Π½Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° ΠΊΠ»ΡŽΡ‡Π°-сына просСиваСмого

элСмСнта ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ мСньшС Π΅Π³ΠΎ. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ: для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠΎΠ±ΠΌΠ΅Π½Π° достаточно Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ оказался мСньшС хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ сыновСй

ΠΊΠ»ΡŽΡ‡, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ся ΠΎΠ±ΠΌΠ΅Π½.

ΠŸΡ€ΠΎΡΠ΅ΠΈΠ²Π°Π½ΠΈΠ΅ элСмСнта Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ любого ΠΈΠ· Π΄Π²ΡƒΡ… условий: Π»ΠΈΠ±ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ся ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² Π² ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π΅, Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΎΠ±ΠΎΠΈΡ… сыновСй.

Рис. 4 — ΠŸΡ€ΠΎΡΠ΅ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° 44 Π² ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ.

Алгоритм просСивания Π² ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ допускаСт Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΡƒ:

просСиваниС элСмСнта с ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ temp,

ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ условий остановки — Π²Ρ‹Ρ…ΠΎΠ΄,

ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ индСкса q ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ выполняСтся ΠΎΠ±ΠΌΠ΅Π½,

ΠΎΠ±ΠΌΠ΅Π½ элСмСнтов с ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ temp ΠΈ q,

temp:= q,

ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏ. 1.

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ массиву, Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Sift, которая выполняСт просСивания Π² ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ индСксом R:

Procedure Sift (temp, R: Integer);

Var q: integer;

x: TElement;

Begin

q:==2*t;

If q > R Then Exit;

If q < R Then

If a[q-l]. Key > a[q]. Key Then q:= q + 1;

If a[temp-1]. Key <= a[q-l]. Key Then Exit;

x:= a[temp-1];

a [temp-1] := a[q-l];

a[q-l]:= x;

temp:= q;

Shift (temp, R);

End;

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Shift ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Π° ΠΎΡ‚ Π½ΡƒΠ»Ρ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим процСсс создания ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° Π°[0], Π°[1], a[Highlndex]. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ этого массива ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ 0, Π° ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π° ΠΎΡ‚ 1. Ясно, Ρ‡Ρ‚ΠΎ элСмСнты a[N/2], a[N/2+1], …, a[Highlndex] ΡƒΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π΄Π²ΡƒΡ… индСксов i (i= N/2+1, N/2+2, …) ΠΈ j, Ρ‚Π°ΠΊΠΈΡ…, Ρ‡Ρ‚ΠΎ, j=2i (ΠΈΠ»ΠΈ j=2i+l). Π­Ρ‚ΠΈ элСмСнты ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π»ΠΈΡΡ‚ΡŒΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π° Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ Π²Π»Π΅Π²ΠΎ: Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС добавляСтся Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ просСивания помСщаСтся Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ мСсто. Π­Ρ‚ΠΎΡ‚ процСсс ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ построСния ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹

44 55 12 42 94 18 06 67

44 55 12 42 94 18 06 67

44 55 06 42 94 18 12 67

44 42 06 55 94 18 12 67

06 42 12 55 94 18 44 67

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ — ΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρƒ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ шагС Π΅Π΅ ΠΏΠΎΡΡ‚роСния

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, процСсс построСния ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹ ΠΈΠ· N ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² «Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ мСстС» ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

R:= N;

For i:= N Div 2 Downto 1 Do

Sift (i, R);

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ, Π½ΠΎ ΠΈ ΠΏΠΎΠ»Π½ΡƒΡŽ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ элСмСнтов Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ N ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‰ΠΈΡ… шагов, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Π΄Π΅Ρ€Π΅Π²Π° выталкиваСтся ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ (наимСньший элСмСнт). Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос, Π³Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ «Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅» Π²Π΅Ρ€Ρ…Π½ΠΈΠ΅ элСмСнты? БущСствуСт Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π±Ρ€Π°Ρ‚ΡŒ послСднюю ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹ (скаТСм, это Π±ΡƒΠ΄Π΅Ρ‚ Ρ…), ΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ элСмСнт Π½Π° ΠΌΠ΅ΡΡ‚ΠΎ Ρ…, Π° Ρ… ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ элСмСнта Π°[0] ΠΈ ΠΏΡ€ΠΎΡΠ΅ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ приводятся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π² ΡΡ‚ΠΎΠΌ случаС шаги:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прСобразования ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹ Π² ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

06 42 12 55 94 18 44 67

12 42 18 55 94 67 44 06

18 42 44 55 94 67 12 06

42 55 44 67 94 18 12 06

44 55 94 67 42 18 12 06

55 67 94 44 42 18 12 06

67 94 55 44 42 18 12 0Π±

94 67 55 44 42 18 12 06 — Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

Π­Ρ‚ΠΎΡ‚ процСсс описываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Sift ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

For R:= Highlndex Downto 1 Do Begin

x:=a[0]; a[0]: =a[R]; a[R]: =x;

Sift (1, R);

End;

Из ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° сортировки Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. Но ΡΡ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ порядка Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ Sift (Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… If Ρ‚Скста ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Sift, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ PyramidSort, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ спСцифику индСксации Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π°:

Procedure PyramidSort;

Var R, i: integer;

x: TElement;

Begin

R:= N;

For i:= N Div 2 Downto 1 Do

Sift (i, R);

For R:= Highlndex Downto 1 Do Begin

x:=a[0]; a[0]: = a[R]; a[R]: = x;

Sift (l, R);

End;

Алгоритм просСивания для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ массива, Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π±Π»ΠΎΠΊ-схСмС:

5. Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Π”Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный интСрфСйс ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ всС Π±ΠΎΠ³Π°Ρ‚Π΅ΠΉΡˆΠΈΠ΅ возмоТности ΠΏΠ°ΠΊΠ΅Ρ‚Π° Borland Delphi.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ запускС активируСтся пСрвая — Π²ΠΊΠ»Π°Π΄ΠΊΠ° хозяйствСнных Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ² «Π₯Π”» (см. Ρ€ΠΈΡ.5).

Рис. 5 — Π’ΠΊΠ»Π°Π΄ΠΊΠ° ходяйствСнных Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ²

Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ внСсти измСнСния (ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ² чСкбокс «Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅»), Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ записи.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Ρ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€ΡƒΠ΄ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠ² «Π’Π’К» (см. Ρ€ΠΈΡ.6), ΠΌΡ‹ ΠΏΠΎΠΏΠ°Π΄Π΅ΠΌ Π½Π° ΡΠΏΠΈΡΠΎΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² исполнитСлСй всСх Ρ…ΠΎΠ·Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ², ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π’Π’Πš.

Рис.6 — Π’ΠΊΠ»Π°Π΄ΠΊΠ° списков Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² исполнитСлСй всСх Ρ…ΠΎΠ·Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ²

Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ списки, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΡ… ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅. НуТно ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ «ΠšΠΎΠ΄ Π₯Π”» составляСтся ΠΈΠ· Π½ΠΎΠΌΠ΅Ρ€Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π° ΠΈ Π³ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°.

Π’Ρ€Π΅Ρ‚ΡŒΡ Π²ΠΊΠ»Π°Π΄ΠΊΠ° «Π‘Π°Π½ΠΊ» содСрТит Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π±Π°Π½ΠΊΠΎΠ² сбСрбанка, Π³Π΄Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ счСта исполнитСля Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ² (см. Ρ€ΠΈΡ.7).

Рис.7 — Π’ΠΊΠ»Π°Π΄ΠΊΠ° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π±Π°Π½ΠΊΠΎΠ² сбСрбанка.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΄Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΡ…, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅.

И Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ находится упорядочСнный ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Ρƒ Ρ‡Π»Π΅Π½ΠΎΠ² Π’Π’Πš (ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ) всСх Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ² с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ части ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² (согласно заданию ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ). Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ Π΄Π°Π½Π½ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ прСдставлСн Π½Π° Ρ€ΠΈΡ. 8.

Рис.8 — Π’ΠΊΠ»Π°Π΄ΠΊΠ° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ²

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ² происходит ΠΈΠ»ΠΈ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ, ΠΈΠ»ΠΈ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ количСства Ρ‡Π»Π΅Π½ΠΎΠ² Π’Π’Πš ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ (согласно заданию ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ).

Из Π²ΡΠ΅Ρ… Π²ΠΊΠ»Π°Π΄ΠΎΠΊ доступно мСню «Π€Π°ΠΉΠ»», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ с Π·Π°ΠΏΠΈΡΡΠΌΠΈ всСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊΠΆΠ΅ доступСн поиск ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Ρ‹ знания ΠΏΠΎ Ρ„изичСским размСщСниям структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (сортировки). Π’ Π˜Π‘Π  DELPHI Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° инормационная систСма расчётов ΠΏΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°ΠΌ. ΠŸΡ€ΠΈ создании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½ΠΎΠΉ ИБР.

ВСстированиС Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ‚сутствиС ошибок ΠΈ Π½Π΅Π΄ΠΎΡ‡Ρ‘Ρ‚ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ задания курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π‘Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ базовая структура Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ сортировки.

1 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС / Π›Π°ΠΊΠΈΠ½ Π’. И., Π ΠΎΠΌΠ°Π½ΠΎΠ² А. Π’. — ΠœΠ½.: БНВУ, 2004 — 176 с.

2 ΠΡ€Ρ…Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΠΉ А. Π―. Delphi 6. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ пособиС. М.: Π—ΠΠž «Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠ²ΠΎ Π‘Π˜ΠΠžΠœ», 2001. 1024 с.

3 Π’ΠΈΡ€Ρ‚ Н. Алгоритмы ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. БПб: НСвский Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚, 2001. 352 с.

4 Π“ΡƒΠΊ М. АппаратныС срСдства IBM PC. ЭнциклопСдия. БПб: ΠŸΠΈΡ‚Π΅Ρ€, 2003. 928 с.

5 ΠšΠ½ΡƒΡ‚ Π”. Π­. Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования, Ρ‚ΠΎΠΌ 1. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2002. 720 с.

6 ΠšΠ½ΡƒΡ‚ Π”. Π­. Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования, Ρ‚ΠΎΠΌ 3. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠΎΠΈΡΠΊ. М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2001. 832 с.

7 Лэнгсам Π™., ΠžΠ³Π΅Π½ΡΡ‚Π°ΠΉΠ½ М., Π’Π΅Π½Π΅Π½Π±Π°ΡƒΠΌ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π­Π’Πœ. — Πœ.: ΠœΠΈΡ€, 1989. — 475 с.

8 Π€Π°Ρ€ΠΎΠ½ΠΎΠ² Π’. БистСма программирования DELPHI. БПб.: «Π‘Π’Π₯-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³», 2004. 887 с.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

unit Unit1;

interface

uses

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

ComCtrls, Grids, Menus, StdCtrls, ExtCtrls;

type

// Ρ‚ΠΈΠΏ для хранСния строки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ NDgrid

SRow=array [0.5] of String[30];

TForm1 = class (TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

XDgrid: TStringGrid;

TabSheet2: TTabSheet;

WTKgrid: TStringGrid;

TabSheet3: TTabSheet;

BANKgrid: TStringGrid;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

btnSearch: TButton;

txtSearch: TEdit;

TabSheet4: TTabSheet;

NDgrid: TStringGrid;

N4: TMenuItem;

CheckBox1: TCheckBox;

btnDel: TButton;

GroupBox1: TGroupBox;

btnSort1: TButton;

btnSort2: TButton;

procedure FormCreate (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure btnSearchClick (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure CheckBox1Click (Sender: TObject);

procedure btnDelClick (Sender: TObject);

procedure btnSort2Click (Sender: TObject);

procedure btnSort1Click (Sender: TObject);

private

{ Private declarations }

XDar: array [1.70] of String[30]; {массив для Π₯Π”}

WTKar: array [1.150] of String[30]; {массив для Π’Π’Πš}

BANKar: array [1.50] of String[30]; {массив для БА}

public

{ Public declarations }

procedure LoadFromFiles;

procedure InitGrids;

procedure FillArrays;

procedure SaveInFiles;

procedure FillNDgrid;

procedure Sort;

procedure Sort2;

procedure SweepRows (r1,r2:word);

procedure SaveRow (var sr: SRow;r:word);

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

{ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΡ‹ Π² ΠΌΠ°ΡΡΠΈΠ²Ρ‹}

procedure TForm1. LoadFromFiles;

var

F:TextFile;

i:integer;

begin

{Π€Π°ΠΉΠ» — 'XD.txt'}

// ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для чтСния

AssignFile (F,'XD.txt');

Reset (F);

if IOResult <> 0 then

// ошибка открытия Ρ„Π°ΠΉΠ»Π°!

begin

{$I+}

MessageBox (0,'Ошибка!','НС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» XD. txt!', MB_OK);

exit;

end;

{$I+}

// считываСм Ρ„Π°ΠΉΠ» построчно Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ массив XDar

i:=1;

while not (SeekEof (F))do

begin

ReadLn (F, XDar[i]);

inc (i);

end;

CloseFile (F); // Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

{Π€Π°ΠΉΠ» — 'WTK.txt'}

{$I-}

// ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для чтСния

AssignFile (F,'WTK.txt');

Reset (F);

if IOResult <> 0 then

// ошибка открытия Ρ„Π°ΠΉΠ»Π°!

begin

{$I+}

MessageBox (0,'Ошибка!','НС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» WTK. txt!', MB_OK);

exit;

end;

{$I+}

// считываСм Ρ„Π°ΠΉΠ» построчно Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ массив XDar

i:=1;

while not (SeekEof (F))do

begin

ReadLn (F, WTKar[i]);

inc (i);

end;

CloseFile (F); // Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

{Π€Π°ΠΉΠ» — 'BANK.txt'}

{$I-}

// ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для чтСния

AssignFile (F,'BANK.txt');

Reset (F);

if IOResult <> 0 then

// ошибка открытия Ρ„Π°ΠΉΠ»Π°!

begin

{$I+}

MessageBox (0,'Ошибка!','НС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» BANK. txt!', MB_OK);

exit;

end;

{$I+}

// считываСм Ρ„Π°ΠΉΠ» построчно Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ массив XDar

i:=1;

while not (SeekEof (F))do

begin

ReadLn (F, BANKar[i]);

inc (i);

end;

CloseFile (F); // Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

end;

{ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΅Π΅ Π² ΡΠΎΠΎΡ‚вСтсвии с ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ}

procedure TForm1. InitGrids;

var i, j: integer;

begin

XDgrid.Cells[0,0]: ='НомСр Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°';

XDgrid.Cells[1,0]: ='Π”Π°Ρ‚Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ';

XDgrid.Cells[2,0]: ='Π”Π°Ρ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ';

XDgrid.Cells[3,0]: ='Π’Π΅ΠΌΠ° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°';

XDgrid.Cells[4,0]: ='ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ';

XDgrid.Cells[5,0]:='ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ';

XDgrid.Cells[6,0]: ='CΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ';

WTKgrid.Cells[0,0]:='Ѐамилия';

WTKgrid.Cells[1,0]:='Имя';

WTKgrid.Cells[2,0]:='ΠžΡ‚Ρ‡Π΅ΡΡ‚Π²ΠΎ';

WTKgrid.Cells[3,0]:='Π“ΠΎΠ΄ роТдСния ';

WTKgrid.Cells[4,0]: ='Код Π₯Π” ';

WTKgrid.Cells[5,0]: ='ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ';

WTKgrid.Cells[6,0]:='Π‘ΡƒΠΌΠΌΠ° вознаграТдСния ';

WTKgrid.Cells[7,0]: ='Π”ΠΎΠΌΠ°ΡˆΠ½ΠΈΠΉ адрСс ';

WTKgrid.Cells[8,0]: ='НомСр сбСрбанка';

WTKgrid.Cells[9,0]: ='РасчСтный счСт ';

BANKgrid.Cells[0,0]: ='НомСр отдСлСния';

BANKgrid.Cells[1,0]: ='Π“ΠΎΡ€ΠΎΠ΄';

BANKgrid.Cells[2,0]:='АдрСс ';

BANKgrid.Cells[3,0]: ='НаимСнованиС отдСлСния ';

BANKgrid.Cells[4,0]: ='Банковский ΠΊΠΎΠ΄ ';

NDgrid.Cells[0,0]: ='НомСр Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°';

NDgrid.Cells[1,0]: ='Π”Π°Ρ‚Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ';

NDgrid.Cells[2,0]: ='Π”Π°Ρ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ';

NDgrid.Cells[3,0]: ='Π’Π΅ΠΌΠ° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°';

NDgrid.Cells[4,0]: ='ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ';

NDgrid.Cells[5,0]:= 'Кол-Π²ΠΎ Ρ‡Π»Π΅Π½ΠΎΠ² Π’Π’Πš';

for i:=1 to 10 do

begin

for j:=1 to 7 do

XDgrid.Cells[j-1,i]: =XDar[(i-1)*7+j];

end;

for i:=1 to 15 do

begin

for j:=1 to 10 do

WTKgrid.Cells[j-1,i]: =WTKar[(i-1)*10+j];

end;

for i:=1 to 10 do

begin

for j:=1 to 5 do

BANKgrid.Cells[j-1,i]: =BANKar[(i-1)*5+j];

end;

end;

{Π—Π°ΠΏΠΎΠ»Π½ΠΈΠΌ массивы Π² ΡΠΎΠΎΡ‚вСтсвии с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅}

procedure TForm1. FillArrays;

var i: integer;

begin

for i:=0 to 69 do

begin

XDar[i+1]: =XDgrid.Cells[(i mod 7),(i div 7)+1];

end;

for i:=0 to 149 do

begin

WTKar[i+1]: =WTKgrid.Cells[(i mod 10),(i div 10)+1];

end;

for i:=0 to 49 do

begin

BANKar[i+1]: =BANKgrid.Cells[(i mod 5),(i div 5)+1];

end;

end;

{Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² Ρ„Π°ΠΉΠ»}

procedure TForm1. SaveInFiles;

var

F:TextFile; // тСкстовый Ρ„Π°ΠΉΠ»

i:integer;

begin

{XD.txt}

// ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для записи

AssignFile (F,'XD.txt');

Rewrite (F);

// построчно записываСм ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° Π² Ρ„Π°ΠΉΠ»

for i:=1 to 70 do

WriteLn (F, XDar[i]);

CloseFile (F); // Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

{WTK.txt}

// ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для записи

AssignFile (F,'WTK.txt');

Rewrite (F);

// построчно записываСм ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° Π² Ρ„Π°ΠΉΠ»

for i:=1 to 150 do

WriteLn (F, WTKar[i]);

CloseFile (F); // Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

{BANK.txt}

// ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для записи

AssignFile (F,'BANK.txt');

Rewrite (F);

// построчно записываСм ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° Π² Ρ„Π°ΠΉΠ»

for i:=1 to 50 do

WriteLn (F, BANKar[i]);

CloseFile (F); // Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

LoadFromFiles; // Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π² ΠΌΠ°ΡΡΠΈΠ²Ρ‹

InitGrids; // инициализация Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

FillNDgrid; // Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ²

end;

{Π’Ρ‹Ρ…ΠΎΠ΄}

procedure TForm1. N2Click (Sender: TObject);

begin

Halt;

end;

{Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ}

procedure TForm1. N3Click (Sender: TObject);

begin

FillArrays; // сначала Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ массивы Π² ΡΠΎΠΎΡ‚вСтсвии с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

SaveInFiles; // Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сохраним Π² Ρ„Π°ΠΉΠ»

end;

{Поиск}

procedure TForm1. btnSearchClick (Sender: TObject);

var

myRect: TGridRect;

Grid: TStringGrid;

nCol, i, j:integer;

st:String;

begin

st:=txtSearch.Text; // строка для поиска

// опрСдСляСм Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π·Π°ΠΊΠ»Π°Π΄ΠΊΡƒ

case PageControl1. ActivePageIndex of

0: begin Grid:= XDgrid; nCol:=7; end;

1: begin Grid:=WTKgrid; nCol:=10; end;

2: begin Grid:=BANKgrid; nCol:=5; end;

end;

myRect.Left := 11;

myRect.Top := 11;

myRect.Right := 11;

myRect.Bottom := 11;

Grid.Selection:= myRect;

if (st=' ') or (st='') then exit;

// поиск

for i:=1 to 10 do

for j:=0 to nCol-1 do

if Grid. Cells[j, i]=st then

begin

myRect.Left := j;

myRect.Top := i;

myRect.Right := j;

myRect.Bottom := i;

Grid.Selection := myRect;

exit;

end;

end;

{Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ² Π² ΡΠΎΠΎΡ‚вСтсвии с

XDgrid, WTKgrid, BANKgrid}

procedure TForm1. FillNDgrid;

var i, j, y, n: integer;

code:string;

st:string;

begin

j:=1;

for i:=1 to 10 do

if (XDGrid.Cells[5,i]='Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½') then

begin

NDgrid.Cells[0,j]: =XDGrid.Cells[0,i];

NDgrid.Cells[1,j]:=XDGrid.Cells[1,i];

NDgrid.Cells[2,j]:=XDGrid.Cells[2,i];

NDgrid.Cells[3,j]:=XDGrid.Cells[3,i];

NDgrid.Cells[4,j]:=XDGrid.Cells[4,i];

// составим ΠΊΠΎΠ΄ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°

code:= NDgrid. Cells[0,j]+'/'+ NDgrid. Cells[1,j][9]+ NDgrid. Cells[1,j][10];

// Π½Π°ΠΉΠ΄Π΅ΠΌ сколько Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ состоит ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΡ‚ΠΎΠΌ Π’Π’Πš

n:=0;

for y:=1 to 15 do

if (WTKgrid.Cells[4,y]=code) then inc (n);

str (n, st);

NDgrid.Cells[5,j]: =st;

inc (j);

end;

end;

{ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ — ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ²}

procedure TForm1. N4Click (Sender: TObject);

var i, j: integer;

begin

for i:=1 to 10 do

for j:=0 to 5 do

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

FillNDgrid;

end;

{ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° рСдактирования}

procedure TForm1. CheckBox1Click (Sender: TObject);

var opt: TGridOptions;

begin

opt:=XDgrid.Options;

if CheckBox1. Checked=false then

begin

Include (opt, goRowSelect);

Exclude (opt, goEditing);

btnDel.Enabled := true;

end

else

begin

Exclude (opt, goRowSelect);

Include (opt, goEditing);

btnDel.Enabled := false;

end;

XDgrid.Options := opt;

WTKgrid.Options := opt;

BANKgrid.Options := opt;

end;

{Π£Π΄Π°Π»ΠΈΡ‚ΡŒ}

procedure TForm1. btnDelClick (Sender: TObject);

var

myRect: TGridRect;

Grid: TStringGrid;

nCol, i, j:integer;

begin

// опрСдСляСм Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π·Π°ΠΊΠ»Π°Π΄ΠΊΡƒ

case PageControl1. ActivePageIndex of

0: begin Grid:= XDgrid; nCol:=7; end;

1: begin Grid:=WTKgrid; nCol:=10; end;

2: begin Grid:=BANKgrid; nCol:=5; end;

end;

if (Grid.Row>0) and (Grid.Row<10) then

for i:=Grid.Row to 10 do

begin

for j:=0 to nCol-1 do

Grid.Cells[j, i]: =Grid.Cells[j, i+1];

end;

end;

{ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ сортировка Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ NDgrid ΠΏΠΎ Π²ΠΎΠ·Ρ€ΠΎΡΡ‚Π°Π½ΠΈΡŽ}

procedure TForm1. Sort;

var

l, r: word;

x, n, n1,n2,c, y: integer;

s:string;

sr:SRow;

procedure Sift;

label l3;

var i, j, y:word;

begin

i:=l;j:=2*i;s:=NDgrid.Cells[5,i]; SaveRow (sr, i);

while j<=r do

begin

if j

begin

Val (NDgrid.Cells[5,j], n1, c);

Val (NDgrid.Cells[5,j+1], n2, c);

if n1

end;

Val (s, n1, c);

Val (NDgrid.Cells[5,j], n2, c);

if n1>=n2 then goto l3;

for y:=0 to 5 do

NDgrid.Cells[y, i]: =NDgrid.Cells[y, j];

i:=j; j:=2*i;

end;

l3:

for y:=0 to 5 do

begin

NDgrid.Cells[y, i]: =sr[y];

end;

end; // Sift

begin

n:=0;

for y:=1 to 10 do

if (NDgrid.Cells[5,y]<>'') and (NDgrid.Cells[5,y]<>' ') then

inc (n);

l:=(n div 2)+1;r:=n;

while l>1 do

begin

l:=l-1; Sift;

end;

while r>1 do

begin

SaveRow (sr, 1);

s:=NDgrid.Cells[5,1];

SweepRows (1,r);

r:=r-1; Sift;

end;

end; // Sort

{ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Π»ΡŒΠ½Π°Ρ сортировка Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ NDgrid ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ}

procedure TForm1. Sort2;

var

l, r: word;

x, n, n1,n2,c, y: integer;

s:string;

sr:SRow;

procedure Sift;

label l3;

var i, j, y:word;

begin

i:=l;j:=2*i;s:=NDgrid.Cells[5,i]; SaveRow (sr, i);

while j<=r do

begin

if j

begin

Val (NDgrid.Cells[5,j], n1, c);

Val (NDgrid.Cells[5,j+1], n2, c);

if n1>n2 then j:=j+1;

end;

Val (s, n1, c);

Val (NDgrid.Cells[5,j], n2, c);

if n1<=n2 then goto l3;

for y:=0 to 5 do

NDgrid.Cells[y, i]: =NDgrid.Cells[y, j];

i:=j; j:=2*i;

end;

l3:

for y:=0 to 5 do

begin

NDgrid.Cells[y, i]: =sr[y];

end;

end; // Sift

begin

n:=0;

for y:=1 to 10 do

if (NDgrid.Cells[5,y]<>'') and (NDgrid.Cells[5,y]<>' ') then

inc (n);

l:=(n div 2)+1;r:=n;

while l>1 do

begin

l:=l-1; Sift;

end;

while r>1 do

begin

SaveRow (sr, 1);

s:=NDgrid.Cells[5,1];

SweepRows (1,r);

r:=r-1; Sift;

end;

end; // Sort2

{ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами строки r1 ΠΈ r2 Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ NDgrid}

procedure TForm1. SweepRows (r1,r2:word);

var s: array [0.5] of String[30];

i:integer;

begin

for i:=0 to 5 do

s[i]: =NDgrid.Cells[i, r1];

for i:=0 to 5 do

NDgrid.Cells[i, r1]: =NDgrid.Cells[i, r2];

for i:=0 to 5 do

NDgrid.Cells[i, r2]: =s[i];

end;

{ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ строку Π½ΠΎΠΌΠ΅Ρ€ r Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ NDgrid Π² sr}

procedure TForm1. SaveRow (var sr: SRow;r:word);

var i: integer;

begin

for i:=0 to 5 do

sr[i]: =NDgrid.Cells[i, r];

end;

procedure TForm1. btnSort2Click (Sender: TObject);

begin

Sort;

end;

procedure TForm1. btnSort1Click (Sender: TObject);

begin

Sort2;

end;

end.

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