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

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ запись Π² языкС Π‘ΠΈ

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

НаконСц, язык «C», ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ языку, ΠΈΠΌΠ΅Π΅Ρ‚ свои нСдостатки. НСкоторыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ΅ ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²ΠΎ; Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ синтаксиса ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅; сущСствуСт нСсколько вСрсий языка, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ нСбольшими дСталями. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, язык «C» Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» сСбя ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эффСктивный ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ язык для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ разнообразия ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ программирования. Π―Π·Ρ‹ΠΊ «C… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ запись Π² языкС Π‘ΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

— 2 ;

1. Анализ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ

2. Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

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

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

3.2 Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

3.3 Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

3.4 Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ChartoInt

3.5 Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Scobka

3.6 Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Sumin

3.7 ΠžΠ±Ρ‰Π°Ρ структура ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства

4. Π‘Π»ΠΎΠΊ схСма ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

4.1 Основная Π±Π»ΠΎΠΊ схСма

4.2 Π‘Π»ΠΎΠΊ схСма Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ChartoInt

4.3 Π‘Π»ΠΎΠΊ схСма Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Sumin

4.4 Π‘Π»ΠΎΠΊ схСма Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Scobka

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

6. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°

7. Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

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

9. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2

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

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

Аналогично, язык «C» ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ простыС, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ конструкции ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² управлСния: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ†ΠΈΠΊΠ»Ρ‹, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ Π½Π΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ сопрограммы. Π―Π·Ρ‹ΠΊ «C» Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся языком со ΡΡ‚Ρ€ΠΎΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π² ΡΠΌΡ‹ΡΠ»Π΅ паскаля.

НаконСц, язык «C», ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ языку, ΠΈΠΌΠ΅Π΅Ρ‚ свои нСдостатки. НСкоторыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ΅ ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²ΠΎ; Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ синтаксиса ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅; сущСствуСт нСсколько вСрсий языка, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ нСбольшими дСталями. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, язык «C» Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» сСбя ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эффСктивный ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ язык для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ разнообразия ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ программирования. [1]

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

1. Анализ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ

БущСствуСт мноТСство Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°ΠΌ извСстно 3 ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ. 1 — с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ стСка, 2 — это, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ использованиС стСка, 3 — ΠΌΠ΅Ρ‚ΠΎΠ΄ использованиС массивов.

Для сравнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования стСка для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ:

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΠΊΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π΅Π· прСувСличСния ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ сСгодня стСк ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ классов. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования стСка ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ классов:

class Stek

{ int something;

public:

Stek (); // конструктор

~Stek (); // дСструктор

void pop (int); // ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ

int push (void); // Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ

void print (); // Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ

}

ИспользованиС стСка эффСктивно вслСдствии Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ Π½Π΅ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ использовались массивы ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ся рСгистры стСка:

ss - сСгмСнтный рСгистр стСка,

sp/esp— Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ указатСля стСка,

bd/ebd— Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ указатСля Π±Π°Π·Ρ‹ ΠΊΠ°Π΄Ρ€Π° стСка, Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, рСализация массивов Ρ‡Π΅Ρ€Π΅Π· стСк Π±Ρ‹Π»Π° ΠΎΡ‡Π΅Π½ΡŒ эффСктивна. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π­Π’Πœ Π²Π΅Π»ΠΈΠΊΠ°. Π’ Π‘++ «ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ массивы. Π’ ΡΠ·Ρ‹ΠΊΠ°Ρ… «ΡΡ€Π΅Π΄Π½Π΅Π³ΠΎ» ΠΈ «Π²Ρ‹ΡΠΎΠΊΠΎΠ³ΠΎ» уровня использованиС стСка Π½Π΅ ΠΏΡ€ΠΈΠ½Π΅ΡΡ‘Ρ‚ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠ³ΠΎ ускорСния, Π° Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ВслСдствии Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΠΆΠΊΠ° рСализация стСка Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π² ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ ++ отсутствуСт, ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pop ΠΈ push Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ классы (см. ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования стСка ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ классов). 6] К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ использованиС массивов Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‡Π΅ΠΌ использования стСка, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ пСрСносимо Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки программирования ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ просто для понимания.

2. Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Рассмотрим Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ записи.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ вводится строка символов

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: (1+1)/2+12/(8/2)=

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ состав строки. Π­Ρ‚ΠΎ рСализуСтся Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, являСтся Π»ΠΈ i-символ Ρ†ΠΈΡ„Ρ€ΠΎΠΉ ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠΌ, Π·Π°Ρ‚Π΅ΠΌ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ Ρ†ΠΈΡ„Ρ€Ρ‹ Π² Ρ‡ΠΈΡΠ»Π° ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этих дСйствий, ΡΠ²Π»ΡΡŽΡ‚ΡΡ 2 массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ всС выраТСния Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ… ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Ρ‡ΠΈΡΠ»ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: …+(1+2/2)/… …+2/…

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сдвиги (Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ описано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.5)

Когда ΠΆΠ΅ всС скобки Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² Ρ‡ΠΈΡΠ»ΠΎΠ²Ρ‹Π΅ значСния, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС выраТСния «*» — ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Ρ‚Π΅ΠΌ «/» — Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π·Π°Ρ‚Π΅ΠΌ «+» — слоТСниС ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ† «-» — Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π² Ρ‡ΠΈΡΠ»ΠΎΠ²Ρ‹Π΅ значСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

И Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ описана Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

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

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

Π‘ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ вводится матСматичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ строки символов Π°) числовых — 1 234 567 890 ΠΈ Π±) ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… */±()=. Π’ ΠΊΠΎΠ½Ρ†Π΅ выраТСния ставится `=' ΠΈΠ»ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ (/0 — Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€ ноль). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΅ΡΠ»ΠΈ ошибок Π½Π΅Ρ‚ — Π²Ρ‹Π΄Π°Ρ‘Ρ‚ цСлочислСнный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

3.2 Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выводится Π΄ΠΈΠ°Π»ΠΎΠ³ Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹: ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ простой:

Do you want to look the debugging information? (y/Any key)

Если ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚Π° любая клавиша ΠΊΡ€ΠΎΠΌΠ΅ `y', Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ся простой Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠžΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π”Π°Π»Π΅Π΅ показываСтся Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ ΠΈ ΠΈΠ½Ρ„ормация ΠΎΠ± Π°Π²Ρ‚ΠΎΡ€Π΅. ПослС всСго этого выводится строка Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ расчёта:

<<<——————-[ Расчёт N:1 ]——————->>>

И Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΈΡˆΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

1+1+(555/111)/5+(3/3+6/6+9/9)=

Или

1+1+(555/111)/5+(3/3+6/6+9/9)

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ†Π΅Π½ΠΈΡ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π² ΡΠ»ΡƒΡ‡Π°Π΅ отсутствия ошибок, выдаст цСлочислСнный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

——————————————

OTBET = 10

——————————————

ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ повторСния:

3AHOBO? (Any key/n)

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΌΡ‘Ρ‚ `n' ΠΈΠ»ΠΈ `N', Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. Если ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚Π° любая другая клавиша, Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» повторится:

<<<——————-[ Расчёт N:2 ]——————->>>

И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 2.

3.3 Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ нСпосрСдствСнно ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ вводится строка символов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: (1+1)/2+12/(8/2)=

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сканируСт Π΄Π°Π½Π½ΡƒΡŽ строчку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ scanf («%s» ,&S);

Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ состав строки:

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

if (S[i]=='1'){ buf[i]=1;l++;}

else if (S[i]=='2'){ buf[i]=2;l++;}

else if (S[i]=='3'){ buf[i]=3;l++;}

else if (S[i]=='4'){ buf[i]=4;l++;}

else if (S[i]=='5'){ buf[i]=5;l++;}

else if (S[i]=='6'){ buf[i]=6;l++;}

else if (S[i]=='7'){ buf[i]=7;l++;}

else if (S[i]=='8'){ buf[i]=8;l++;}

else if (S[i]=='9'){ buf[i]=9;l++;}

else if (S[i]=='0'){ buf[i]=0;l++;}

else if (l≠0)

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ChartoInt ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π½Π°Π±ΠΎΡ€ Ρ†ΠΈΡ„Ρ€ Π² Ρ‡ΠΈΡΠ»ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€: 1,2,4 Π² 124.

a[iKol]=ChartoInt (p, i, l);

iKol++; //счСтчик ΠΊΠΎΠ»-Π²Π° чисСл

l=0;//ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ счСтчика Π΄Π»ΠΈΠ½Π½Ρ‹ числа

}}

Π”Π°Π»Π΅Π΅ проводится Π²Ρ‹Π»Π°Π²Π»ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠ°

switch (S[i]) {

case '+' :b[k]=1; k++; break;

case '-' :b[k]=2; k++; break;

case '*' :b[k]=3; k++; break;

case '/' :b[k]=4; k++; break;

case '': break; //Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ сканирования Ссли ''

case '(' :b[k]=5; u1++; k++; break;

case ')' :b[k]=6; u2++; k++; break;

default: break;}

Если встрСчаСм «=» Ρ‚ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅ΠΌ сканированиС

if (S[i]=='=') { break;} // Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ сканирования Если количСство ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… скобок Π½Π΅ Ρ€Π°Π²Π½ΠΎ количСству Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… скобок Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄

if (u1≠u2){goto m1;} // ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠ»-Π²ΠΎ скобок Если всё Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Scobka

Scobka(a1,b1,iKol, k);

ПослС расчётов Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ расчёт Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Sumin

c=Sumin(a1,b1,iKol, k);

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π² Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ s=(int)c;

И Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

printf («r OTBET=[ %i ]n», s);

Рассмотрим Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: ChartoInt , Scobka, Sumit.

3.4 Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ChartoInt

Ѐункция ChartoInt ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов ΠΈΠ· ΡΡ‚Ρ€ΠΎΠΊΠΈ, Π½Π°Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π² Ρ‡ΠΈΡΠ»Π°. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠΌΠ΅Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ символы XYZ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈΡ… Ρ‚Π°ΠΊ:

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ числа, скаТСм сотни, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, 1 число умноТаСтся Π½Π° 100 + ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ число, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° 10 + ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ число, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° 1.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

x, y, z x*100+y*10+z*1 = xyz

1,2,3 1*100+2*10+3*1 = 123

3.5 Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Scobka

Ѐункция Scobka ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ всС выраТСния Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ… Π² Ρ‡ΠΈΡΠ»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (2+4/2) Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΎ Π² 4.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ массив Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π·Π½Π°ΠΊΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, сканируСм массив Π·Π½Π°ΠΊΠΎΠ² Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ скобки ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌ Π½Π°Ρ‡Π°Π»ΠΎ скобок Ρ‡Π΅Ρ€Π΅Π· N, Π° ΠΊΠΎΠ½Π΅Ρ† Ρ‡Π΅Ρ€Π΅Π· N1. Числа ΠΈ Π·Π½Π°ΠΊΠΈ, входящиС Π² ΡΡ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… массива Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π·Π½Π°ΠΊΠΎΠ², Π½ΠΎ ΡƒΠΆΠ΅ Π±Π΅Π· скобок, послС Ρ‡Π΅Π³ΠΎ вызываСтся функция Sumin ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ся числСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ скобок, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ вставляСтся Π² ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив чисСл с ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ сдвига Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‡ΠΈΡΠ΅Π».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Π²Π½Π°Ρ‡Π°Π»Π΅ раскрываСтся 1 скобка, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π½Π΅ΠΉ рассчитываСтся ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Ρ‡ΠΈΡΠ΅Π» происходит сдвиг. Π—Π°Ρ‚Π΅ΠΌ Ρ‚ΠΎΠΆΠ΅ продСлываСтся со Π²Ρ‚ΠΎΡ€ΠΎΠΉ скобкой. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ состоящий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π·Π½Π°ΠΊΠΎΠ² +, -, * ΠΈ /.

3.6 Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Sumin

Ѐункция Sumin ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ числовых ΠΈ Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… массивов с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΠΉΡ‰Π΅Π³ΠΎ расчёта Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π’.Π΅ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, спСрва с ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ «*», Π·Π°Ρ‚Π΅ΠΌ с Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ «/», Π·Π°Ρ‚Π΅ΠΌ с ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ «+» ΠΈ Π·Π°Ρ‚Π΅ΠΌ с Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ «-» .

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 12+2*7−10/2 12+14−10/2 12+14−5 6−5 21

Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ описана Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 1.

3.7 ΠžΠ±Ρ‰Π°Ρ структура ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства

— 2 ;

4. Π‘Π»ΠΎΠΊ схСма

4.1 Основная Π±Π»ΠΎΠΊ схСма

— 2 ;

— 2 ;

— 2 ;

4.2 Π‘Π»ΠΎΠΊ схСма Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ChartoInt

— 2 ;

4.3 Π‘Π»ΠΎΠΊ схСма Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Sumin

— 2 ;

— 2 ;

4.4 Π‘Π»ΠΎΠΊ схСма Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Scobka

— 2 ;

— 2 ;

— 2 ;

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

Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ:

Β· НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ классы.

Β· «Π‘Π΄Π²ΠΈΠ³» Π½Π΅ Π²Ρ‹Π½Π΅ΡΠ΅Π½ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ затрудняСт ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Β· Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… скобок

Β· Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ cos (), sin (), ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Β· Π‘Ρ‚Ρ€ΠΎΠ³ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ числового Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° расчётов

Β· ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ «Π΄Ρ€ΡƒΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ³ΠΎ» — ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ интСрфСйса.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ — это ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, Microsoft® Visual C++ ΠΈΠ»ΠΈ Borland® Delphi.

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

Основной ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

#include

#include

#include

#include

int ChartoInt (int*, int, int);

double Sumin (int*, int *, int, int);

void Scobka (int*, int *, int, int);

char OTLADKA[1];

void main (void)

/*======================[Начало]=======================*/

{

char S[125];

int i, iKol, m, buf[125], a[100], b[100], k,*p, l,*a1,*b1,u1,u2,s, ABC;

double c;

mr:

puts («Do Want to look the debugging information? (y/Any key)»);

if (getch ()≠'y') {puts («Debugging information OFF»); OTLADKA[1]='N'; }

else {puts («Debugging information ON»);printf («a»); OTLADKA[1]='Y'; }

ABC=1;

m1:

printf («rΠ­ <<<——————-[ Расчёт N:%i ]——————->>> Π­ n», ABC);

scanf («%s» ,&S);

if (OTLADKA[1]=='Y') printf («n**** ΠžΡ‚Π»Π°Π΄ΠΎΡ‡Π½Π°Ρ информация *****n»);

m=strlen (S);

p=buf;a1=a; b1=b; //ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

k=0;iKol=0;l=0;u1=0;u2=0;

/*ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ числа ΡΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π·Π°ΠΏΠΈΡΡŒ Π² ΠΌΠ°ΡΡΠΈΠ² Π°, Π³Π΄Π΅ l-счСтчик-Π΄Π»ΠΈΠ½Π½Ρ‹ числа*/

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

{

if (S[i]=='1'){ buf[i]=1;l++;}

else if (S[i]=='2'){ buf[i]=2;l++;}

else if (S[i]=='3'){ buf[i]=3;l++;}

else if (S[i]=='4'){ buf[i]=4;l++;}

else if (S[i]=='5'){ buf[i]=5;l++;}

else if (S[i]=='6'){ buf[i]=6;l++;}

else if (S[i]=='7'){ buf[i]=7;l++;}

else if (S[i]=='8'){ buf[i]=8;l++;}

else if (S[i]=='9'){ buf[i]=9;l++;}

else if (S[i]=='0'){ buf[i]=0;l++;}

else { if (l≠0) {

a[iKol]=ChartoInt (p, i, l);

iKol++; //счСтчик ΠΊΠΎΠ»-Π²Π° чисСл

l=0; //ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ счСтчика Π΄Π»ΠΈΠ½Π½Ρ‹ числа

}

}

/*Π’Ρ‹Π»Π°Π²Π»ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠ° ΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π΅ΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€Π° 1−6 */

switch (S[i]) {

case '+' :b[k]=1; k++; break;

case '-' :b[k]=2; k++; break; // ΠΊ-счСтчик ΠΊΠΎΠ»-Π²Π° Π·Π½Π°ΠΊΠΎΠ²

case '*' :b[k]=3; k++; break;

case '/' :b[k]=4; k++; break;

case '': break; //Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ сканирования Ссли ΠΊΠΎΠ½Π΅Ρ†

case '(' :b[k]=5; u1++; k++; break;

case ')' :b[k]=6; u2++; k++; break;

default :break;}

if (S[i]=='=') { break;} // Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ сканирования

}

if (u1≠u2){goto m1;} // ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠ»-Π²ΠΎ скобок

Scobka(a1,b1,iKol, k); // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Π°

c=Sumin(a1,b1,iKol, k);// присваиваниС ΠΎΡ‚Π²Π΅Ρ‚Π°

s=(int)c; // ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа

if (OTLADKA[1]=='Y') printf («n ***** OTLADKA INFO [END]*******n»);

puts («Π­ —————————————— Π­»);

printf («r OTBET=[ %i ]n», s); // Π²Ρ‹Π²ΠΎΠ΄ ΠΎΡ‚Π²Π΅Ρ‚Π°

puts («Π­ —————————————— Π­»);

printf («[ 3AHOBO? (Any key/n) ]r»); if (getch ()≠='n') {goto m1;}

}

}

/*==================[ΠšΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹]==================*/

int ChartoInt (int *p, int i, int l)

{

int a, j, b, b2, m;

a=0;

m=i+1-l;//ВычислСниС Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… xx>[m]YYY>xxx

for (j=m; j<= (i+1); j++) // `1 2 3' => 100+20+3=123

{

b=pow (10,(i-j)); //ΠΊΠΎΠ»-Π²ΠΎ Π½ΡƒΠ»Π΅ΠΉ

b2=p[j-1]; // извлСкаСмая Ρ†ΠΈΡ„Ρ€Π°

a=a+(b2*b); //число1+ число2+… числоN= число

}

return (a);

}

double Sumin (int *pa1,int *pb1,int j, int k)

{

int i, buf1, l;

double s;

/* Π½Π°Ρ‡Π°Π»ΠΎ сканирования массива Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‡ΠΈΡΠ΅Π» с ΠΎΠΏΡ€Π΅Π΄ΠΈΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈΠΎΡ€Π΅Ρ‚Π΅Ρ‚Π° */

for (i=0;i<=(k+1); i++)

{

if (pb1[i]==3) //" *"

{

buf1=pa1[i]*pa1[i+1]; //ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ x*y

pa1[i]=buf1; //присвоСниС Π½ΠΎΠ²ΠΎΠ³ΠΎ числа

for (l=(i+1);l<=(j+1);l++) //сдвиг Π½Π° ΠΊΠΎΠ»-Π²ΠΎ xxx-cc*dd

{

pa1[l]=pa1[l+1]; // сдвиг Ρ†ΠΈΡ„Ρ€

if (l==j)

{

pa1[l+1]=0;

pa1[j-1]=0;//для всСх

l++;

j—; //ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» Π½Π΅ ΡΡŠΠ΅Π» Π·Π½Π°ΠΊΠΈ ΠΈ Ρ‡ΠΈΡΠ»Π°

//X*Y-u X*Y=a => — " -" съСлся

}

}

for (l=i;l<=(k+1);l++)

{

pb1[l]=pb1[l+1]; //сдвиг знаков

if (l==k)

{

pb1[l+1]=0;

l++;

k—;// ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» Π½Π΅ ΡΡŠΠ΅Π» Π·Π½Π°ΠΊΠΈ ΠΈ Ρ‡ΠΈΡΠ»Π°

i—; // ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» Π½Π΅ ΡΡŠΠ΅Π» Π·Π½Π°ΠΊΠΈ ΠΈ Ρ‡ΠΈΡΠ»Π° }

}

}

if (pb1[i]==4) //" /"

{

buf1=pa1[i]/pa1[i+1];

pa1[i]=buf1;

for (l=(i+1);l<=(j+1);l++)

{

pa1[l]=pa1[l+1];

if (l==j)

{

pa1[l+1]=0;

l++;

j—;

}

}

for (l=i;l<=(k+1);l++)

{

pb1[l]=pb1[l+1];

if (l==k)

{

pb1[l+1]=0;

l++;

k—;

i—;

}

}

}

}

s=pa1[0];

l=0;

for (i=0; i<=(k+1);i++)//Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ дСйствий согласно Π·Π½Π°ΠΊΡƒ

{

if (pb1[l]==1) //" +"

{

s=s+pa1[i+1];

l++;

}

else if (pb1[l]==2) //" -"

{

s=s-pa1[i+1];

l++;

}

}

int j1=0;

return (s);

}

void Scobka (int *a1,int *b1,int l, int k1)

{

int i, n, n1,j, array[126], barray[126],*par,*pbr, iShift, p, j3,iPar, iSk;

double c1;

int as, as1;//для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

par=array;// ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΌΠ°ΡΡΠΈΠ²Ρ‹ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

pbr=barray;

iPar=0; iSk=0;

for (i=0;i<=k1;i++)//основной Ρ†ΠΈΠΊΠ»

{

if (b1[i]==5)//поиск скобок ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ…

{

if (iPar==0) n=i; // ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ скобок

iPar++;

}

if (b1[i]==6) //поиск скобок Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ…

{

if (iPar≠1)

{

iPar—;

iSk++;

continue;

}

n1=i;// ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΠ½Π΅Ρ† скобок

p=0;//индСкс для Π½ΠΎΠ²Ρ‹Ρ… массивов

for (j=n;j

{

array[p]=a1[j]; //созданиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… массивов чисСл

p++;

as=p; //для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

}

p=0;

for (j=(n+1);j

{

barray[p]=b1[j]; //созданиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… массивов Π·Π½Π°ΠΊΠΎΠ²

p++;

as1=p; //для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

}

if (iSk≠0)

{

if (OTLADKA[1]=='Y') Scobka(par, pbr, as, as1);

}

iShift=n1-n; //" Π‘Π΄Π²ΠΈΠ³" слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ — 1

c1=Sumin (par, pbr, iShift,(iShift-1)); //возвращаСмая сумма Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ…

if (OTLADKA[1]=='Y') printf («n Π Π°Π·Π½ΠΎΠ΅ количСство скобок N=%fn», c1);

a1[n]=(int)c1;

for (j3=0;j3<=iShift;j3++) //очистка массивов Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Π½ΡƒΠΆΠ½Π°

{

par[j3]=0;

pbr[j3]=0;

}

/*====================[сдвиг]==========================*/

if (l>n1)//l-количСство чисСл Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ a1 Ссли Π·Π° ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅Ρ‚ Ρ‚ΠΎ Π΄Π»Ρ упращСния Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ

{

for (j=(n+1);j

{

a1[j]=a1[j+iShift-1]; //сдвиг чисСл

if (j==(l-iShift+1)) //ΡƒΡ‡Ρ‚Π΅Π½ΠΎ Ρ‡Ρ‚ΠΎ массив начинаСтся с Π½ΡƒΠ»Ρ ΠΈ Ρ‚ΠΎΡ‡Ρ‚ΠΎ сдвиг-1

{

for (j3=(l-iShift+1);j3

{

a1[j3]=0;

}

j=l; //Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΡΠ΄Π²ΠΈΠ³Π° Ρ†ΠΈΠΊΠ»Π° для массива чисСл

}

} //закрытия Ρ†ΠΈΠΊΠ»Π° сдвига чисСл

l-=(iShift-1); //количСство чисСл ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΎΡΡŒ

for (j=n;j

{

b1[j]=b1[j+iShift+1]; //сдвиг знаков

if (j==(k1-iShift-2))

{

for (j3=(k1-iShift-1);j3

{

b1[j3]=0;

}

j=k1;//Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΡΠ΄Π²ΠΈΠ³Π° массива }

}

k1-=(iShift+1); //количСство Π·Π½Π°ΠΊΠΎΠ² ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΎΡΡŒ

i=0; //ΠΏΡ€ΠΎΠ±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» с Π½Π°Ρ‡Π°Π»Π°

}//Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ скобки ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ сдвига

else if (l==n1)

{

a1[n+1]=0;

b1[n]=0;

}

}

}

}

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

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

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