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

ВыявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ зависимости Π² массивС Π΄Π°Π½Π½Ρ‹Ρ…

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

Атрибут a Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ опрСдСляСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ b, Ссли ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° a ΡΠΎΠΎΡ‚вСтствуСт Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° b. Π’ ΡΡ‚ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ приводится ΠΎΠ΄Π½Π° ΠΈΠ· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΡΠ°ΠΌΠΎΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, с ΡΠ°ΠΌΠΎΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ транспозиции. Для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ» kursovic. exe, Π° Π·Π°Ρ‚Π΅ΠΌ, для просмотра Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» dat.txt. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ВыявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ зависимости Π² массивС Π΄Π°Π½Π½Ρ‹Ρ… (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ Московский ГосударствСнный ΠŸΠ΅Π΄Π°Π³ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ УнивСрситСт ΠšΠ°Ρ„Π΅Π΄Ρ€Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ-ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅»

Π’Π΅ΠΌΠ°: «Π’ыявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ зависимости Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΄Π°Π½Π½Ρ‹Ρ…»

Москва-2009

Π’ Π½Π°ΡΡ‚оящСС врСмя Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ чСловСчСской Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΈ Π²ΡΠ΅ ΡˆΠΈΡ€Π΅ осущСствляСтся ΠΈΡ… Π°Π²Ρ‚оматизация Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ срСдств Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ.

Одним ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ являСтся алгоритмичСскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ алгоритмичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ составлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ·Ρ‹ΠΊΠΎΠ² программирования.

ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнным языком программирования являСтся язык C++. Π•Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ ΡΡ‚Ρ€ΠΎΠ³ΠΎΡΡ‚ΡŒ, высокая ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ конструкций объявлСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, возмоТности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ программирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ общая Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ программирования Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ этот язык срСди Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования высокого уровня.

Π‘ Ρ…ΠΎΠ΄ΠΎΠΌ Π½Π°ΡƒΡ‡Π½ΠΎ-тСхничСского прогрСсса чСловСчСство всё Π±ΠΎΠ»Π΅Π΅ нуТдаСтся Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ способС хранСния ΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ….

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

Π’ ΡΡ‚ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ приводится ΠΎΠ΄Π½Π° ΠΈΠ· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΡΠ°ΠΌΠΎΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, с ΡΠ°ΠΌΠΎΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ транспозиции.

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

2. ОписаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Алгоритм опрСдСляСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ зависимости состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ модуля ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π’ Π³Π»Π°Π²Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ находится 3 Ρ†ΠΈΠΊΠ»Π°. Π’ Π³Π»Π°Π²Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ создаСтся Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сохраняСтся вся информация. Π’Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ производится Π² Ρ„Π°ΠΉΠ»Π΅ «dat.txt».

3. ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ модуля, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ:

Β· stdio.h.

Β· stdlib. h

Β· conio. h

Β· math. h

Β· time. h

Β· io. h

Β· dos. h

Β· string. h

Β· sysstat. h

Для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ создаСтся Ρ„Π°ΠΉΠ» «dat.txt».

Атрибут a Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ опрСдСляСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ b, Ссли ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° a соотвСтствуСт Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° b.

4. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ зависимости Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° IBM PC/AT 386 ΠΈ Π²Ρ‹ΡˆΠ΅ ΠΈ Π΄Π»Ρ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ 1 Мб ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ 15 Кб Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠΉ памяти.

Для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ» kursovic. exe, Π° Π·Π°Ρ‚Π΅ΠΌ, для просмотра Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» dat.txt.

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ случайными Ρ†Π΅Π»Ρ‹ΠΌΠΈ числам.

Для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ escape.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

5.

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

На Π΄Π°Π½Π½ΠΎΠΌ тСстовом Π½Π°Π±ΠΎΡ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. ΠŸΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½Π°Ρ Π·Π°Π΄Π°Ρ‡Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ соотвСтствуСт трСбованиям Π•Π‘ΠŸΠ”.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А.

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

# include

# include

# include

# include

# include

# include

# include

# include

# include

int const m=6, n=10, Ld=m*n/4, Lk=m*5;

unsigned short kk=0;

int a [n-1] [m-1];

int b [n-1] [m-1];

unsigned short k[Lk];

unsigned short kn[m];

unsigned short d[Ld] [2];

unsigned short dn[m] [2];

unsigned short kt [m+1];

unsigned short Lt;

unsigned short mt;

// - //

unsigned short i, j;

void tabl ()

{

int i;

randomize ();

for (i=0; i

for (j=0; j

{

a[i] [j]=rand ()%(n+m);

if (a[i] [j]<0)

a[i] [j]=0;

}

}

void vivod1 ()

{

FILE *f;

int i, j;

f=fopen («dat.txt», «a+»);

fprintf (f, «matrican»);

for (i=1; i<=m; i++)

fprintf (f," a % 1d", i);

fprintf (f, «n»);

for (i=0; i

{

for (j=0; j

fprintf (f, «%3d», a[i] [j]);

fprintf (f, «n»);

}

fprintf (f, «n»);

fclose (f);

}

void vivod2 ()

{

FILE *f;

int i, j;

f=fopen («dat.txt», «a+»);

fprintf (f, «new_matrican»);

for (i=1; i<=m; i++)

fprintf (f," a % 1d", dn[i] [1]);

fprintf (f, «n»);

for (i=0; i

{

for (j=0; j

if (b[i] [j]>0)

fprintf (f, «%3d», d [b[i] [j]+dn [j-1] [2]] [1]);

else

fprintf (f, «%3d», b[i] [j]);

fprintf (f, «n»);

}

fprintf (f, «n»);

fclose (f);

}

// - //

void create_domain ()

{

FILE *f;

unsigned short i, j, ii, jj, num;

unsigned short dt [n-1] [1];

f=fopen («dat.txt», «a+»);

dn[0] [2]=0;

for (num=1; num

{

dn[num] [2]=dn [num-1] [2];

j=0;

for (i=0; i

if (a[i] [num]≠0)

{

ii=1;

while ((ii<=j)&&(dt[ii] [1]

ii=ii+1;

if (ii<=j)

{

if (a[i] [num]=dt[ii] [1])

dt[ii] [2]=dt[ii] [2]+1;

else

{

for (jj=j; jj>ii; jj-)

{

dt [jj+1] [1]=dt[jj] [1];

dt [jj+1] [2]=dt[jj] [2];

}

j=j+1;

dt[ii] [1]=a[i] [num];

dt[ii] [2]=1;

}

}

else

{

j=j+1;

dt[j] [1]=a[i] [num];

dt[j] [2]=1;

}

}

for (i=0; i

if (dt[i] [2]>1)

{

dn[num] [2]=dn[num] [2]+1;

d [dn[num] [2]] [1]=dt[i] [1];

d [dn[num] [2]] [2]=dt[i] [2];

}

fprintf (f," dom=%1d", num);

for (i=dn [num-1] [2]; i

for (j=0; j<=2; j++)

fprintf (f, ««, d[i] [j]);

fprintf (f, «n»);

}

fclose (f);

}

void first_key ()

{

unsigned short i;

for (i=0; i

kt[i]=i;

}

void next_key ()

{

unsigned short i, j;

j=Lt;

while ((j>0) && (kt[j]>=mt-Lt+j))

j=j-1;

if (j>0)

{

kt[j]=kt[j]+1;

for (i=j+1; i

kt[i]=kt [i-1]+1;

}

else

kt[1]=0;

}

void new_table ()

{

unsigned short i, j, ii;

for (i=1; i

for (j=1; j

if (a[i] [dn[j] [1]]=0)

b[i] [j]=-1;

else

{

ii=dn [j-1] [2]+1;

while ((ii<=dn[j] [2])&&(a[i] [dn[j] [1]]>d[ii] [1]))

ii=ii+1;

if ((ii<=dn[j] [2])&&(a[i] [dn[j] [1]]=d[ii] [1]))

b[i] [j]=ii-dn [j-1] [2];

else

b[i] [j]=0;

}

}

void analiz1 ()

{

unsigned short i, j;

kn[0]=0;

kn[1]=0;

j=0;

for (i=1; i

if (dn[i] [2]=dn[j] [2])

{

kn[1]=kn[1]+1;

k [kn[1]]=i;

}

else

{

j=j+1;

dn[j] [1]=i;

dn[j] [2]=dn[i] [2];

}

mt=j;

}

void analiz_n ()

{

unsigned short mm [m-1];

unsigned short i, j, ii, jj;

char yes_key;

unsigned long s[8];

for (i=1; i

mm[i]=dn[i] [2] - dn [i-1] [2];

kn[2]=kn[1];

for (Lt=2; Lt

{

first_key ();

do

{

yes_key=1;

i=2;

while (yes_key && (i

{

j=kn [i-1]+1;

while (yes_key && (j<=kn[i]))

{

jj=j;

ii=1;

while (yes_key && (jj-j<=Lt))

{

if (k[jj]

j+=i;

break;

}

else

if (k[jj]=kt[ii])

{

jj=jj+1;

ii=ii+1;

if (jj-j>=i)

yes_key=0;

}

else

if (Lt-ii

{

j+=i;

break;

}

else

ii=ii+1;

}

}

i=i+1;

}

if (yes_key)

{

i=1;

for (i=0; i<8; i++)

s[i]=0;

while (yes_key && (i<=n))

{

j=1;

ii=0;

while ((j<=Lt) && (b[i] [kt[j]]>0))

{

ii=ii*mm [kt[j]]+b[i] [kt[j]] - 1;

j=j+1;

}

i=i+1;

if (j>Lt)

if (s [ii>>5]&(1<<(ii&0x1F)))

yes_key=0;

else

s [ii>>5]

}

if (yes_key)

{

kk=kk+1;

for (i=1; i

{

k [kn[Lt]+i]=kt[i];

}

kn[Lt]=kn[Lt]+Lt;

}

}

next_key ();

} while (kt[1]=0);

kn [Lt+1]=kn[Lt];

for (i=2; i

for (j=kn [i-1]+1; j

k[j]=dn [k[j]] [1];

}

}

// - //

void main ()

{

FILE *f;

clrscr ();

int handle;

handle = creat («d:\Kursovik\dat.txt», S_IREAD |S_IWRITE);

f=fopen («dat.txt», «a+»);

mt=m;

tabl ();

vivod1 ();

fprintf (f, «n»);

create_domain ();

analiz1 ();

new_table ();

vivod2 ();

analiz_n ();

fprintf (f, «n»);

fprintf (f," Keysn");

kk=1;

for (Lt=1; Lt<=m; Lt++)

{

fprintf (f," Lt=%1dn", Lt);

j=kn [Lt-1]+1;

while (j<=kn[Lt])

{

for (i=1; i

fprintf (f, «%1d», k [j+i-1]);

fprintf (f, «n»);

j=j+Lt;

}

}

fclose (f);

}

Бписок использованной Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

1. Π‘. Π’. Π‘Π°ΠΌΡƒΠΉΠ»ΠΎΠ² «ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ поиска ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ». — ΠŸΠ΅Π½Π·Π°: ΠΈΠ·Π΄-Π²ΠΎ «ΠŸΠ“Π£», 1998 — 36 с.

2. Π‘. ΠšΠ°Ρ€ΠΏΠΎΠ², Π’. Π‘Π°Ρ€Π°Π½ΠΎΠ²Π° «Π‘++ Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ справочник». — Π‘-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³: Изд-Π²ΠΎ «ΠŸΠΈΡ‚Π΅Ρ€», 2009 — 480 с.

3. Π’. М. Π›ΠΈΠ½ΡŒΠΊΠΎΠ², Π’. Π’. Π”Ρ€ΠΎΠΆΠ΄ΠΈΠ½ «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ паскаль» ПСнза, ΠŸΠ“ΠŸΠ£ ΠΈΠΌ. Π’. Π“. БСлинского, 2007 — 70.

4. Π’. Π’. ПодбСльский, Π‘. Π‘. Π€ΠΎΠΌΠΈΠ½ «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘++» — Москва, 2008;600 с.

5. УоллСс Π’ΠΎΠ½Π³, «ΠžΡΠ½ΠΎΠ²Ρ‹ программирования для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²» 2002 — 336 с.

6. О. Π›. Π“ΠΎΠ»ΠΈΡ†Ρ‹Π½Π°, И. И. Попов «ΠžΡΠ½ΠΎΠ²Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ», 2008;446 с.

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