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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° β€” ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€

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

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° β€” ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠ˜ΠΠ˜Π‘Π’Π•Π Π‘Π’Π’Πž ΠžΠ‘Π ΠΠ—ΠžΠ’ΠΠΠ˜Π― Π ΠžΠ‘Π‘Π˜Π™Π‘ΠšΠžΠ™ Π€Π•Π”Π•Π ΠΠ¦Π˜Π˜ Брянский ГосударствСнный ВСхничСский УнивСрситСт ΠšΠ°Ρ„Π΅Π΄Ρ€Π° «Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС»

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° — ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€»

ВсСго листов Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ 00-ПО2

Π“ΠΎΠ»ΡŒΠ΄ΠΈΠ½ Π•.Π“.

ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π˜Π·Ρ€Π°ΠΈΠ»Π΅Π² Π’.Π―.

Брянск

  • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ 2
  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ 3
  • ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ 4
  • ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ 4
  • Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 5
  • ВСхничСскиС Π΄Π°Π½Π½Ρ‹Π΅ для использования 6
  • ОписаниС основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ 6
  • Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ 7
  • Π―Π·Ρ‹ΠΊ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ наш способ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ
  • ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, ΠΎ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ.
  • Π‘.Π›. Π’ΠΎΡ€Ρ„

БСгодня ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ всС большС ΠΈ Π±ΠΎΠ»ΡŒΡˆΠ΅ Π²Π½Π΅Π΄Ρ€ΡΡŽΡ‚ΡΡ Π² Π½Π°ΡˆΡƒ Тизнь. Для ΠΈΡ… ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ использования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½Π° ΡΠ·Ρ‹ΠΊΠ°Ρ… программирования. Один ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… распространСнных языков являСтся Π‘ΠΈ.

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

Π‘ΠΈ ΡΠΎΡ‡Π΅Ρ‚Π°Π΅Ρ‚ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°Π»ΠΎΠΌ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ языкС. Π₯отя Π‘ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ встроСнных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ языка, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄, распрСдСлСниС памяти, манипуляций с ΡΠΊΡ€Π°Π½ΠΎΠΌ ΠΈΠ»ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссами, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, систСмноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π‘ΠΈ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ.

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

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

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

Π—Π°Π΄Π°Ρ‡Π° курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ состоит Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°, которая позволяСт ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ выраТСния, состоящиС ΠΈΠ· Ρ‡ΠΈΡΠ΅Π», содСрТащих Π΄ΠΎ 29 Ρ†ΠΈΡ„Ρ€ ΠΎΡ‚ 0 Π΄ΠΎ 9, постоянныС числа pi=3,14 159 265 359 ΠΈ e=2.718 281 828 459, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ синус (sin), косинус (cos), арксинус (asin), арккосинус (acos) ΠΈ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ (ln).

НСобходимо Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡƒΠ½ΠΊΡ‚ «ΠŸΠΎΠΌΠΎΡ‰ΡŒ» для ознакомлСния с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C Π² ΡΡ€Π΅Π΄Π΅ Borland C++ V. 3.1

ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ

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

Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

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

token_value get_token ()

{

char ch;

do

{

if ((ch = getch ()) = = ESC) return curr_tok = END;

} while (ch = = ' ');

switch (ch)

{

case ';':

putch (ch);

ps = 'x0';

return curr_tok = PRINT;

case 'r':

ps = 'x0';

gotoxy (1,wherey ()+1);

return curr_tok = NEXT;

case '*': case '/': case '+': case '-':

case '(': case ')': case '=': case '^':

dupl_oper_verify (ps, ch);

return curr_tok = ch;

case '0': case '1': case '2': case '3': case '4':

case '5': case '6': case '7': case '8': case '9': case '.':

ps = 'x0';

ungetch (ch);

get_number ();

return curr_tok = NUMBER;

default:

ps = 'x0';

if (isalpha (ch))

{

ungetch (ch);

get_name ();

return curr_tok = NAME;

}

error («Invalid symbol»);

return curr_tok = PRINT;

}

}

Π­Ρ‚Π° функция являСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΈ распознавании Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ выраТСния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΈ вычислСнии ΠΎΡ‚Π²Π΅Ρ‚Π°.

ВСхничСскиС Π΄Π°Π½Π½Ρ‹Π΅ для использования

Для запуска Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° IBM PC/XT с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой MS-DOS. Русификатор для ознакомлСния с ΠŸΠΎΠΌΠΎΡ‰ΡŒΡŽ. ОбъСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти 640 ΠšΠ±Π°ΠΉΡ‚. Для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Cal_kur.exe ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Ρ‘ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

ОписаниС основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Ѐункция get_token () — функция синтаксичСского Ρ€Π°Π·Π±ΠΎΡ€Π° Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ выраТСния.

Ѐункция get_number () — функция Π²Π²ΠΎΠ΄Π° числа.

Ѐункция get_name () — функция Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ постоянной ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Ѐункция expr () — функция вычислСниС ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ выраТСния.

Ѐункция term () — функция вычислСниС слагаСмого.

Ѐункция prim () — функция вычислСниС ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΉ части выраТСния.

Ѐункция function_value () — функция вычислСниС значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Ρ‹Π²ΠΎΠ΄ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅

Ѐункция error () — функция Π²Ρ‹Π²ΠΎΠ΄ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅.

Ѐункция term_sym () — функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ символ.

Ѐункция void back_space () — функция исправлСниС ошибки Π²Π²ΠΎΠ΄Π° клавишСй BACKSPACE.

Ѐункция dupl_oper_verify () — функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° дублирования Π·Π½Π°ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Ѐункция menu () — функция ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅Ρ‚ мСню.

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

1. Π›. И. Π¨ΠΎΠ»ΠΌΠΎΠ². Π―Π·Ρ‹ΠΊ Π‘ΠΈ. 1988 Π³.

2. Π“. Π¨ΠΈΠ»Π΄Ρ‚. C Π΄Π»Ρ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… программистов. 1989 Π³.

3. Π‘. Π’. ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½, Π”. М. Π ΠΈΡ‡ΠΈ. Π―Π·Ρ‹ΠΊ Π‘ΠΈ. 1995 Π³.

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

#include

#include

#include

#include

#include

#include

#include

#define PI 3.14 159 265 359

#define E 2.718 281 828 459

#define ENTER 13

#define ESC 27

#define BACKSPACE 'b'

// Массив, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ символам

enum token_value

NAME, NUMBER, END,

PRINT=';', NEXT='r',

PLUS='+', MINUS='-', MUL='*', DIV='/', POWER='^',

ASSIGN='=', LP='(', RP=')';

token_value curr_tok;

// ЧислСнная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°

double number_value;

// Π‘Ρ‚Ρ€ΠΎΠΊΠ° для хранСния Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

char *func_name;

// НомСр Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΡΠ»ΠΎΠ²Π°Ρ€Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

int function_number;

// Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

char funcs[43] = «sin cos ln asin acos e pi «;

int sch_ch = 0;

// ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π°Ρ опСрация

char ps = 'x0';

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти

void *Malloc (size_t size);

// Ѐункция синтаксичСского Ρ€Π°Π·Π±ΠΎΡ€Π° выраТСния

token_value get_token (void);

// Π’Π²ΠΎΠ΄ числа

void get_number (void);

// Π’Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

void get_name (void);

// ВычислСниС ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ выраТСния

double expr (void);

// ВычислСниС слагаСмого

double term (void);

// ВычислСниС ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΉ части выраТСния

double prim (void);

// ВычислСниС значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

double function_value (void);

// Π’Ρ‹Π²ΠΎΠ΄ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅

double error (char *);

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ символ

int term_sym (char);

// Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ошибки клавишСй BACKSPACE

void back_space (int *);

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° дублирования Π·Π½Π°ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

void dupl_oper_verify (char, char);

// Окно Π²Ρ‹Π²ΠΎΠ΄Π° сообщСния

void message ();

// Π Π°ΠΌΠΊΠ° ΠΎΠΊΠ½Π°

void ramka ();

// Окно Π²Π²ΠΎΠ΄Π° выраТСния

void screen_input ();

// Окно Π²Π²ΠΎΠ΄Π° ΠΎΡ‚Π²Π΅Ρ‚Π°

void screen_output ();

// Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ

void info ();

// ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ мСню

void menu (int n);

// ΠœΡƒΠ·Ρ‹ΠΊΠ° ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅

void sound_exit ();

//Π”Π²Π° Π½Π° Π΄Π²Π°

void dva_x_dva ();

/*===============================Основная Ρ‡Π°ΡΡ‚ΡŒ============================*/ void main ()

FILE *help, *about; int m=1,loop=1,i, pr;

double x;

char s[255], key = -1,*put,*empty_str;

clrscr ();

textbackground (0);

textcolor (15);

while (loop)

clrscr ();

menu (m);

do

key = getch ();

if (key==72 && m>1)

m—;

menu (m);

sound (220);

delay (50);

nosound ();

;

if (key==80 && m<4)

m++;

menu (m);

sound (220);

delay (50);

nosound ();

;

while (key≠13);

switch (m)

case 1:

clrscr (); if ((help=fopen (put="d:\univer\langs\bc\work\Help.txt" ," r"))==NULL)

printf («Imposible open file %s!n», put);

getch ();

break;

return;

i=0;

while (!feof (help))

putchar (getc (help));

i++;

_setcursortype (_NOCURSOR);

getch ();

break;

case 2:

clrscr ();

ramka ();

screen_input ();

screen_output ();

message ();

info ();

dva_x_dva ();

_setcursortype (_NORMALCURSOR);

textcolor (15);

gotoxy (6,4);

func_name = (char*) Malloc (5);

while (1)

get_token ();

if (curr_tok == END) break;

if (curr_tok ≠ PRINT && curr_tok ≠ NEXT)

pr=printf («%fn», expr ());

if (pr≠0)

gotoxy (6,4);

printf (««

" «);

gotoxy (6,4);

free (func_name);

break;

case 3:

clrscr (); if ((about=fopen (put="d:\univer\langs\bc\work\Credits.txt" ," r"))==NULL)

printf («Imposible open file %s!n», put);

getch ();

break;

return;

i=0;

while (!feof (about))

putchar (getc (about));

i++;

_setcursortype (_NOCURSOR);

getch ();

break;

case 4:

sound_exit ();

loop = 0;break;

default:

continue;

/*=========================ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти========================*/

void *Malloc (size_t size)

void *p;

if ((p=malloc (size))==NULL)

printf («No memoryn»);

exit (1);

return p;

/*==================Ѐункция синтаксичСского Ρ€Π°Π·Π±ΠΎΡ€Π° выраТСния==============*/

token_value get_token ()

char ch;

do

if ((ch = getch ()) == ESC) return curr_tok = END;

while (ch == ' ');

switch (ch)

case ';':

putch (ch);

ps = 'x0';

return curr_tok = PRINT;

case 'r':

ps = 'x0';

gotoxy (1,wherey ()+1);

return curr_tok = NEXT;

case '*': case '/': case '+': case '-':

case '(': case ')': case '=': case '^':

dupl_oper_verify (ps, ch);

return curr_tok = ch;

case '0': case '1': case '2': case '3': case '4':

case '5': case '6': case '7': case '8': case '9': case '.':

ps = 'x0';

ungetch (ch);

get_number ();

return curr_tok = NUMBER;

default:

ps = 'x0';

if (isalpha (ch))

ungetch (ch);

get_name ();

return curr_tok = NAME;

error («Invalid symbol»);

return curr_tok = PRINT;

/*=====================ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° дублирования Π·Π½Π°ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ================*/

void dupl_oper_verify (char ps, char ch)

if (ps=='*' || ps=='/' || ps=='+' || ps=='-' || ps=='^')

error («Operation is duplicated»);

ch = ps;

else

putch (ch);

if (ps=='*' || ps=='/' || ps=='+' || ps=='-' || ps=='^') ps = ch;

/*====================================Π’Π²ΠΎΠ΄ числа===========================*/

void get_number ()

char ch, dec_flag=0;

char *anum;

int i=0;

anum = (char*) Malloc (32);

do

ch=getch ();

if (isdigit (ch))

putch (ch);

*(anum+i) = ch;

i++;

else

if (ch == '.')

if (dec_flag) error («Second decimal point is forbidden»);

else

dec_flag = 1;

putch (ch);

*(anum+i) = ch;

i++;

else

if (ch == BACKSPACE) back_space (&i);

else

if (!term_sym (ch))

error («Invalid symbol»);

ch = BACKSPACE;

while (i < 31 && (isdigit (ch) || ch == '.' || ch == BACKSPACE));

anum[i] = 'x0';

number_value = _atold (anum);

ungetch (ch);

free (anum);

/*=====================ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ символ=====================*/

int term_sym (char ch)

if (ch == '*' || ch == '/' || ch == '+' || ch == '-' ||

ch == '(' || ch == ')' || ch == '=' || ch == '^' ||

ch == ESC || ch == ';' || ch == 'r') return 1;

else return 0;

/*================Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ошибки клавишСй BACKSPACE====================*/

void back_space (int *i)

if (i)

gotoxy (wherex ()-1,wherey ());

putch (' ');

gotoxy (wherex ()-1,wherey ());

i—;

/*========================Π’Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ==============================*/

void get_name ()

char ch;

int i=0, j;

do

ch = getch ();

if (isalnum (ch))

putch (ch);

*(func_name+i) = ch;

i++;

for (j = 0; j < 42 && strncmp (funcs+j, func_name, i); j += 6);

if (j >= 42)

error («Invalid function»);

i—;

else

if (ch == BACKSPACE) back_space (&i);

else

if (!term_sym (ch))

error («Invalid symbol»);

ch = BACKSPACE;

while (i < 5 && (isalnum (ch) || ch == BACKSPACE));

*(func_name+i) = 'x0';

function_number = j/6;

ungetch (ch);

/*=====================ВычислСниС ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ выраТСния========================*/

double expr ()

double left = term ();

while (1)

switch (curr_tok)

case PLUS:

get_token ();

left += term ();

break;

case MINUS:

get_token ();

left -= term ();

break;

default:

if (curr_tok ≠ RP)

// gotoxy (31,8);

gotoxy (23,8);

printf (««);

gotoxy (23,8);

return left;

/*===========================ВычислСниС слагаСмого=========================*/

double term ()

double left = prim ();

while (1)

switch (curr_tok)

case MUL:

get_token ();

left *= term ();

break;

case DIV:

get_token ();

float d = prim ();

if (!d) return error («Division by zero»);

left /= d;

break;

case POWER:

get_token ();

left = pow (left, term ());

default:

return left;

/*==================ВычислСниС ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΉ части выраТСния===================*/

double prim ()

switch (curr_tok)

case NUMBER:

get_token ();

return number_value;

case NAME:

get_token ();

return function_value ();

case MINUS:

get_token ();

returnprim ();

case LP:

get_token ();

double e = expr ();

if (curr_tok ≠ RP) return error («Rigth parentsis expected»);

get_token ();

return e;

case END:

return 1;

default:

return number_value;

/*=====================ВычислСниС значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ========================*/

double function_value ()

switch (function_number)

case 0:

return sin (expr ());

case 1:

return cos (expr ());

case 2:

return log (expr ());

case 3:

return asin (expr ());

case 4:

return acos (expr ());

case 5:

return E;

case 6:

return PI;

/*========================Π’Ρ‹Π²ΠΎΠ΄ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅========================*/

double error (char *s)

int sx, sy;

char *empty_str, *err_message;

err_message = (char*) Malloc (strlen (s)+29);

strcpy (err_message, s);

strcat (err_message,". Press any key to continue!");

empty_str = (char*) Malloc (strlen (s)+29);

memset (empty_str,' ', strlen (s)+28);

empty_str[strlen (s)+28] = 'x0';

sx = wherex ();

sy = wherey ();

gotoxy (16,22);

textcolor (10);

cprintf («%s», err_message);

sound (440);

delay (550);

nosound ();

getch ();

gotoxy (16,22);

cprintf («%s», empty_str);

gotoxy (sx, sy);

textcolor (15);

free (err_message);

free (empty_str);

/*==============================Окно сообщСния============================*/

void message ()

textcolor (RED);

gotoxy (15,21);

cprintf («-»);

for (int x=16;x<70;x++)

cprintf («-»);

cprintf («-»);

gotoxy (15,22);

cprintf («|»);

gotoxy (70,22);

cprintf («|»);

gotoxy (15,23);

cprintf («-»);

for (int x1=16;x1<70;x1++)

cprintf («-»);

cprintf («-»);

gotoxy (3,22);

cprintf («Message:»);

/*==================================Π Π°ΠΌΠΊΠ°=================================*/

void ramka ()

textcolor (10);

cprintf («=»);

for (int x=2;x<80;x++)

cprintf («=»);

cprintf («=»);

for (int y=2;y<24;y++)

cprintf («|nb»);

cprintf («=»);

for (int x1=2;x1<80;x1++)

cprintf («=»);

cprintf («=»);

gotoxy (80,2);

for (int y1=2;y1<24;y1++)

gotoxy (80,y1);

cprintf («|»);

/*=================================Окно ввода=============================*/

void screen_input ()

textcolor (10);

gotoxy (5,3);

cprintf («-»);

for (int x=6;x<76;x++)

cprintf («-»);

cprintf («-»);

gotoxy (5,4);

cprintf («|»);

gotoxy (76,4);

cprintf («|»);

gotoxy (5,5);

cprintf («-»);

for (int x1=6;x1<76;x1++)

cprintf («-»);

cprintf («-»);

textcolor (15);

gotoxy (35,2);

cprintf («Input expression»);

/*=================================Окно Π²Ρ‹Π²ΠΎΠ΄Π°=============================*/

void screen_output ()

textcolor (10);

gotoxy (22,7);

cprintf («-»);

for (int x=22;x<58;x++)

cprintf («-»);

cprintf («-»);

gotoxy (22,8);

cprintf («|»);

gotoxy (59,8);

cprintf («|»);

gotoxy (22,9);

cprintf («-»);

for (int x1=22;x1<58;x1++)

cprintf («-»);

cprintf («-»);

textcolor (15);

gotoxy (39,6);

cprintf («Answer»);

/*================================Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ===============================*/

void info ()

textcolor (10);

gotoxy (13,11);

cprintf («Input expression, used ±*/()^ sin, cos, asin, acos, ln, pi, e»);

gotoxy (22,12);

cprintf («Enter; = output answer Esc exit»);

/*====================================МСню================================*/

void menu (int n)

clrscr ();

textcolor (3); gotoxy (31,9);

cprintf («Program calculatorn»);

textcolor (15);

if (n == 1) textcolor (12); else

textcolor (15);

gotoxy (37,12);

cprintf («Helpn»);

if (n == 2) textcolor (12); else

textcolor (15);

gotoxy (34,14);

cprintf («Calculatorn»);

if (n == 3) textcolor (12); else

textcolor (15);

gotoxy (33,16);

cprintf («About authorn»);

if (n == 4) textcolor (12); else

textcolor (15);

gotoxy (37,18);

cprintf («Exitn»);

_setcursortype (_NOCURSOR);

/*===========================ΠœΡƒΠ·Ρ‹ΠΊΠ° ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅===========================*/

void sound_exit ()

sound (659.3);

delay (310);

sound (784);

delay (310);

sound (721.65);

delay (310);

sound (659.3);

delay (310);

sound (495.9);

delay (310);

sound (587.3);

delay (310);

sound (513.65);

delay (310);

sound (440);

delay (310);

nosound ();

/*=================================Π”Π²Π° Π½Π° Π΄Π²Π°=============================*/

void dva_x_dva ()

textcolor (1);

gotoxy (32,15);

cprintf («—— ——»);

gotoxy (34,16);

cprintf («— —- — ——»);

gotoxy (32,17);

cprintf («— - - — ——»);

gotoxy (32,18);

cprintf («—— ——»);

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