ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΡΠ°ΡΡΠ°ΠΉΡΠ΅Π³ΠΎ ΠΏΡΡΠΈ Π² Π³ΡΠ°ΡΠ΅
Π―Π²Π»ΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, 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.