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

НахоТдСниС ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ Π² Π³Ρ€Π°Ρ„Π΅

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

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

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

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ мноТСство повсСднСвных процСссов. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ автоматизация ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСна ΠΈ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ развиваСтся, проникая практичСски Π²ΠΎ Π²ΡΠ΅ области соврСмСнного мироустройства. Π‘Ρ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ обусловлСно высоким спросом, это Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ процСссы ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΈΡ… ΠΏΠΎΡΡ‚оянно растСт.

Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· качСствСнно ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ², Π° ΠΈΡ… ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ изучСния мноТСства дисциплин. Одной ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… дисциплин являСтся «Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…». Π­Ρ‚ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ…, ΠΈ Π±Π΅Π· Π΅Π³ΠΎ изучСния Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ.

ЦСлью Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, являСтся ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΡ Π·Π½Π°Π½ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°, Π° Π΅ΡΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, обоснованиС Π²Ρ‹Π±ΠΎΡ€Π°, рСализация Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π°Π΄Π°Ρ‡Π΅ΠΉ являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ процСсс.

1. Π’Ρ‹Π±ΠΎΡ€ языка программирования

Для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ я Π²Ρ‹Π±Ρ€Π°Π» язык си++. C++ - ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния.

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

Являясь ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… популярных языков программирования, C++ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. ΠžΠ±Π»Π°ΡΡ‚ΡŒ Π΅Π³ΠΎ примСнСния Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ созданиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² устройств, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для встраиваСмых систСм, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСрвСров, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€Ρ‹). БущСствуСт нСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ языка C++ - ΠΊΠ°ΠΊ бСсплатных, Ρ‚Π°ΠΊ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΠΈΡ…. НаиболСС популярны ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GNU, Microsoft, Intel ΠΈ Embarcadero (Borland). C++ ΠΎΠΊΠ°Π·Π°Π» ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ влияниС Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки программирования, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° Java ΠΈ C#.

ΠŸΡ€ΠΈ создании C++ Π‘ΡŒΡ‘Ρ€Π½ Бтрауструп стрСмился ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ΡΠ·Ρ‹ΠΊΠΎΠΌ C. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ компиляторами C, Ρ‚Π°ΠΊ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Π°ΠΌΠΈ C++, довольно Π²Π΅Π»ΠΈΠΊΠΎ — отчасти благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ синтаксис C++ Π±Ρ‹Π» основан Π½Π° ΡΠΈΠ½Ρ‚аксисС C.

Π―Π·Ρ‹ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊ Π² Π½Π°Ρ‡Π°Π»Π΅ 1980;Ρ… Π³ΠΎΠ΄ΠΎΠ², ΠΊΠΎΠ³Π΄Π° сотрудник Ρ„ΠΈΡ€ΠΌΡ‹ Bell Laboratories Π‘ΡŒΡ‘Ρ€Π½ Бтрауструп ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» ряд ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΡΠ·Ρ‹ΠΊΡƒ C ΠΏΠΎΠ΄ собствСнныС Π½ΡƒΠΆΠ΄Ρ‹. Π”ΠΎ Π½Π°Ρ‡Π°Π»Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ стандартизации язык развивался Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ силами Бтрауструпа Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Π·Π°ΠΏΡ€ΠΎΡΡ‹ программистского сообщСства. Π’ 1998 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π» Ρ€Π°Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΉ стандарт языка C++: ISO/IEC 14 882:1998 «Standard for the C++ Programming Language»; послС принятия тСхничСских исправлСний ΠΊ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρƒ Π² 2003 Π³ΠΎΠ΄Ρƒ — Π½Ρ‹Π½Π΅ΡˆΠ½ΡΡ вСрсия этого стандарта — ISO/IEC 14 882:2003.

Π Π°Π½Π½ΠΈΠ΅ вСрсии языка, извСстныС ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ «C Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ», Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ с 1980 Π³ΠΎΠ΄Π°. ИдСя создания Π½ΠΎΠ²ΠΎΠ³ΠΎ языка Π±Π΅Ρ€Ρ‘Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΡ‚ ΠΎΠΏΡ‹Ρ‚Π° программирования Бтрауструпа для диссСртации. Он ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ язык модСлирования Simula ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ большого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя язык BCPL достаточно быстр, Π½ΠΎ ΡΠ»ΠΈΡˆΠΊΠΎΠΌ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΡΠ·Ρ‹ΠΊΠ°ΠΌ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΈ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ большого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Бтрауструп Π½Π°Ρ‡Π°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Bell Labs Π½Π°Π΄ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ (Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²). ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ примСнСния ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ языков модСлирования оказались нСэффСктивными. Вспоминая ΠΎΠΏΡ‹Ρ‚ своСй диссСртации, Бтрауструп Ρ€Π΅ΡˆΠΈΠ» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ язык C (ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊ BCPL) возмоТностями, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π² ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈΠΌΡƒΠ»Π°. Π―Π·Ρ‹ΠΊ C, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ языком систСмы UNIX, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Bell, являСтся быстрым, ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΡ‹ΠΌ. Бтрауструп Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΊ Π½Π΅ΠΌΡƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, практичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ модСлирования оказались доступными для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (благодаря использованию Π‘ΠΈΠΌΡƒΠ»Π°-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… классов) Ρ‚Π°ΠΊ ΠΈ Ρ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ вычислСний (благодаря Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ C). Π’ Π½Π°Ρ‡Π°Π»Π΅ Π² C Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ классы (с ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΠ΅ΠΉ), ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы, строгая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ², inline-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Разрабатывая C Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ (ΠΏΠΎΠ·Π΄Π½Π΅Π΅ C++), Бтрауструп Ρ‚Π°ΠΊΠΆΠ΅ написал ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ cfront — транслятор, ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ исходный ΠΊΠΎΠ΄ C Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π² ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ простого C. Новый язык, Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ для Π°Π²Ρ‚ΠΎΡ€Π°, ΠΏΡ€ΠΈΠΎΠ±Ρ€Ρ‘Π» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ срСди ΠΊΠΎΠ»Π»Π΅Π³ ΠΈ Π²ΡΠΊΠΎΡ€Π΅ Бтрауструп ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³ Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, отвСчая Π½Π° Ρ‚ысячи вопросов.

Π’ 1983 Π³ΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ языка ΠΈΠ· C Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π² C++. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π½Π΅Π³ΠΎ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ возмоТности, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ссылки, константы, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ свободной ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² (//). Π•Π³ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ коммСрчСский выпуск состоялся Π² ΠΎΠΊΡ‚ябрС 1985 Π³ΠΎΠ΄Π°. Π’ 1985 Π³ΠΎΠ΄Ρƒ Π²Ρ‹ΡˆΠ»ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ «Π―Π·Ρ‹ΠΊΠ° программирования C++», ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ описаниС этого языка, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΈΠ·-Π·Π° отсутствия ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ стандарта. Π’ 1989 Π³ΠΎΠ΄Ρƒ состоялся Π²Ρ‹Ρ…ΠΎΠ΄ C++ вСрсии 2.0. Π•Π³ΠΎ Π½ΠΎΠ²Ρ‹Π΅ возмоТности Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ мноТСствСнноС наслСдованиС, абстрактныС классы, статичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-константы ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹.

Π’ 1990 Π³ΠΎΠ΄Ρƒ Π²Ρ‹ΡˆΠ»ΠΎ «ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ справочноС руководство ΠΏΠΎ C++», ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ впослСдствии Π² ΠΎΡΠ½ΠΎΠ²Ρƒ стандарта. ПослСдниС обновлСния Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, пространства ΠΈΠΌΡ‘Π½, Π½ΠΎΠ²Ρ‹Π΅ способы привСдСния Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Π±ΡƒΠ»Π΅Π²ΡΠΊΠΈΠΉ Ρ‚ΠΈΠΏ.

Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C++ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π²ΠΈΠ²Π°Π»Π°ΡΡŒ вмСстС с Π½ΠΈΠΌ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ C++ стали ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ срСдства для Π·Π°ΠΌΠ΅Π½Ρ‹ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ C printf ΠΈ scanf. ПозднСС самым Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ стало Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Π½Π΅Ρ‘ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ шаблонов.

Никто Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΏΡ€Π°Π²Π°ΠΌΠΈ Π½Π° ΡΠ·Ρ‹ΠΊ C++, ΠΎΠ½ ΡΠ²Π»ΡΠ΅Ρ‚ся свободным. Однако сам Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ стандарта языка (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠΎΠ²) Π½Π΅ Π΄ΠΎΡΡ‚ΡƒΠΏΠ΅Π½ бСсплатно.

2. Π’Ρ‹Π±ΠΎΡ€ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Π—Π°Π΄Π°Ρ‡Π° нахоТдСния ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ постоянно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π° для Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ скорой мСдицинской ΠΏΠΎΠΌΠΎΡ‰ΠΈ, Π±Ρ€ΠΈΠ³Π°Π΄ быстрого рСагирования, ΠΌΠΈΠ»ΠΈΡ†ΠΈΠΈ, спасатСлСй… ΠŸΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΡΡ Π² ΠΏΡƒΡ‚ΡŒ, становится ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ.

Анализ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², примСняСмых Π² Π½Π°ΡΡ‚оящСС врСмя для поиска ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ Π³Ρ€Π°Ρ„Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π£ΠΎΡ€ΡˆΠΎΠ»Π»Π°, ДСйкстры, Π€ΠΎΡ€Π΄Π°. ВсС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, Π½ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным считаСтся Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ДСйкстры, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² 1959 Π³ΠΎΠ΄Ρƒ.

ДСйкстра Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» классичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΏΠΎ Π³Ρ€Π°Ρ„Π°ΠΌ, Π³Ρ€Π°Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ вСс. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС, ΠΎΠ½ ΠΈΡ‰Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΠΊ ΡΡ‚Π°Ρ€Ρ‚Ρƒ, Π·Π°Ρ‚Π΅ΠΌ просматриваСт сосСдСй Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°, ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ обновляСт ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ расстояния ΠΎΡ‚ ΡΡ‚Π°Ρ€Ρ‚Π°. Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° прСимущСства ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΠΎΠΈΡΠΊΠΎΠΌ Π² ΡˆΠΈΡ€ΠΈΠ½Ρƒ: ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρƒ ΠΏΡƒΡ‚ΠΈ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ ΡƒΠ·Π»Ρ‹, Ссли ΠΊ Π½ΠΈΠΌ Π½Π°ΠΉΠ΄Π΅Π½ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ.

3. Π’Ρ‹Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ язык Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

Π”Π°Π½Π½Ρ‹Π΅ этой Π·Π°Π΄Π°Ρ‡ΠΈ я ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠ» Π² Π²ΠΈΠ΄Π΅ взвСшСнного Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π° (Рис. 1).

Рис. 1. Π‘Ρ…Π΅ΠΌΠ° Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², обслуТиваСмых ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° начинаСтся с Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состоит ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (Main). Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ компиляции Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка программирования Delphi. Π’ Π³Π»Π°Π²Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ содСрТится функция main. Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ содСрТатся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

4. БпСцификация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

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

const char file[]="c:\Goroda.txt" - имя Ρ„Π°ΠΉΠ»Π° Π½Π° ΠΆΠ΅ΡΡ‚ΠΊΠΎΠΌ дискС, хранящим названия Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ².

string from, to — Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°.

int w[N][N] - вСсовая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π³Ρ€Π°Ρ„Π°.

string g[N] - массив, хранящий список Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ².

int *way — динамичСский массив для хранСния ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

void Initial (string *Arr) — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для заполнСния массива string g[] списком Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² ΠΈΠ· Ρ„Π°ΠΉΠ»Π° file.

int *minimalLengthWay (int wm[N][N], int fromNode, int toNode, int *length, int *weight) — Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ Π² Π³Ρ€Π°Ρ„Π΅

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

ПослС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠΊΡ€Π°Π½ выводится список Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² ΠΈ Ρ€Π°ΡΡΡ‚ояния ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. НуТно Π±ΡƒΠ΄Π΅Ρ‚ ввСсти Π³ΠΎΡ€ΠΎΠ΄ отправлСния ΠΈ Π³ΠΎΡ€ΠΎΠ΄ назначСния.

ПослС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° ΡΠΊΡ€Π°Π½Π΅ появится ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ слСдования ΠΈ Π΄Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ.

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

Π’Ρ‹Π²ΠΎΠ΄ список Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ²

Π’Ρ‹Π²ΠΎΠ΄ расстояний ΠΌΠ΅ΠΆΠ΄Ρƒ Π³ΠΎΡ€ΠΎΠ΄Π°ΠΌΠΈ

Π’Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°

1. Π¨ΠΈΠ»Π΄Ρ‚ Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ «Π‘ΠΈ ++. Руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅», М.; Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2005 Π³.

2. ΠšΡƒΠ±Π΅Π½ΡΠΊΠΈΠΉ А. А. «Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π‘ΠΈ ++», Π‘ΠΏΠ±.; Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2004 Π³.

3. Π‘Π΅Π΄ΠΆΠ²ΠΈΠΊ Π ΠΎΠ±Π΅Ρ€Ρ‚ «Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π° Π‘ΠΈ++», К.; Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ «Π”ΠΈΠ°Π‘ΠΎΡ„Ρ‚», 2001 Π³.

4. Уильям Π’ΠΎΠΏΠΏ, Уильям Π€ΠΎΡ€Π΄ «Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘ΠΈ ++», М.; Π—ΠΠž «Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π‘Π˜ΠΠžΠœ», 1999 Π³.

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

Π‘Ρ…Π΅ΠΌΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

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

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

#include

#include

#include

#include

#include

#define N 12

const char file[]="c:\Goroda.txt" ;

void Initial (string *Arr) {

ifstream fin;

fin.open (file);

if (fin==NULL)

{

cout<<" Error open file" ;

system («Pause»);

exit (1);

}

int n=0;

fin>>Arr[n];

while (fin.good ())

{

n++;

fin>>Arr[n];

}

fin.close ();

}

int *minimalLengthWay (int wm[N][N], int fromNode, int toNode, int *length, int *weight){

int **minWeights; // Для хранСния Ρ„Ρ€ΠΎΠ½Ρ‚Π° Π²ΠΎΠ»Π½Ρ‹

int i, j, k;

int *way; // Для хранСния Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΈ ΡƒΠΆΠ΅ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½

bool find;

int tempLength;

int currNode;

minWeights = new int*[N];

for (i = 0; i < N; i++) {

minWeights[i] = new int[N];

}

way = new int[N];

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

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

minWeights[i][j] = -1;

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

way[i] = -1;

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

minWeights[fromNode][i] = 0;

find = false;

for (k = 0; k < N — 1; k ++) {

for (i = 0; i < N; i ++) {

tempLength = minWeights[i][k];

for (j = 0; j < N; j++) {

if (minWeights[j][k] ≠ -1 && wm[j][i] ≠ -1) {

if ((tempLength ≠ -1 && tempLength > minWeights[j][k] + wm[j][i]) || tempLength == -1) {

tempLength = minWeights[j][k] + wm[j][i];

}

}

}

minWeights[i][k+1] = tempLength;

}

}

find = minWeights[toNode][N-1] ≠ -1; // провСряСм Π½Π°ΠΉΠ΄Π΅Π½ Π»ΠΈ ΠΊΠ°ΠΊΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚ΡŒ

if (find) *weight = minWeights[toNode][N-1];

if (find) { // Ссли ΠΏΡƒΡ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½ — вычисляСм Π΅Π³ΠΎ, Π½ΠΎ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

j = 0;

way[0] = toNode;

currNode = toNode;

for (k = N — 2; k >= 0; k—) {

if (minWeights[currNode][k] ≠ minWeights[currNode][k + 1]) {

for (i = 0; i < N; i ++) {

if (minWeights[i][k] + wm[i][currNode] == minWeights[currNode][k + 1]) {

j++;

way[j] = i;

currNode = i;

break;

}

}

}

}

*length = j;

}

return way;

}

int main () {

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

int i, j;

string from, to;

int f, t;

int *way;

int length, weight;

string g[N];

Initial (g);

int w[N][N]={0, 250,-1,320,-1,-1,-1,-1,-1,-1,-1,-1,

250,0, 300,-1,-1,-1,-1,-1,-1,-1,-1,-1,

— 1,300,0 ,-1,-1,-1,423,-1,-1,-1,-1,-1,

320,-1,-1,0, 640,412,830,-1,-1,-1,-1,-1,

— 1,-1,-1,640,0 ,-1,-1,550,-1,-1,-1,-1,

— 1,-1,-1,412,-1,0 ,-1,300,-1,-1,-1,-1,

— 1,-1,423,830,-1,-1,0, 520,540,580,-1,-1,

— 1,-1,-1,-1,550,300,520,0 ,-1,430,280,-1,

— 1,-1,-1,-1,-1,-1,540,-1,0, 400,-1,-1,

— 1,-1,-1,-1,-1,-1,580,430,400,0 ,-1,650,

— 1,-1,-1,-1,-1,-1,-1,280,-1,-1,0, 360,

— 1,-1,-1,-1,-1,-1,-1,-1,-1,650,360,0 };

cout << «Π‘писок Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², обслуТиваСмых ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ:» << endl << endl;

for (int i = 0; i < N; i++) {

cout<<< endl;

}

cout << endl;

for (int i = 0; i < N; i++) {

for (j = 0; j < i; j++) {

if (w[i][j]>0) {

cout << g[i] << «- «<< g[j] << «» << w[i][j] << «ΠΊΠΌ «<< endl;

}

}

}

cout << endl;

cout << «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ исходный Π³ΠΎΡ€ΠΎΠ΄: «;

cin >> from;

cout << «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ назначСния: «;

cin >> to;

for (i = 0; i < N; i++) {

if (g[i]==from) f=i;

if (g[i]==to) t=i;

}

way = minimalLengthWay (w, f, t, &length, &weight);

if (way[0] == -1)

cout << «ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ !» ;

else {

for (i = length; i >= 0; i—){

if (i ≠ length) cout << «-> «;

cout << g[way[i]];

}

cout << «nΠ”Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ: «<< weight << endl << endl;

}

system («Pause»);

return 0.

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