Π‘Π°ΠΊΠ°Π»Π°Π²Ρ€
Π”ΠΈΠΏΠ»ΠΎΠΌΠ½Ρ‹Π΅ ΠΈ курсовыС Π½Π° Π·Π°ΠΊΠ°Π·

Расстановка скобок Π² арифмСтичСском Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ

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

Function getPriority (symbol: char): integer; // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ расстановки скобок, Ρ‡Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ — Ρ‚Π΅ΠΌ Ρ€Π°Π½ΡŒΡˆΠ΅ выполняСтся опСрация. III.2.7 Π Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ скобки Π² Π°Ρ€ΠΈΡ„мСтичСском Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΡƒΠΊΠ°Π·Π°Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² ΡΠΎΠΎΡ‚вСтствии с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²Π°. If (symbols = '') and (symbols <> '') then // ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° элСмСнтов выраТСния пустых… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Расстановка скобок Π² арифмСтичСском Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Московский ГосударствСнный УнивСрситСт лСса ΠšΠ°Ρ„Π΅Π΄Ρ€Π° «ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½Π°Ρ ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°»

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Ρ‚Π΅ΠΌΡƒ:

" Расстановка скобок"

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»: студСнт Π€Π­Π‘Π’ Π“Ρ€ΡƒΠΏΠΏΡ‹ ПМ-11 Π‘Π°Ρ„ΠΈΠ½ Π’.Π‘.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»Π°: Π΄ΠΎΡ†Π΅Π½Ρ‚ ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹ ПМ ΠΡ„Π°Π½Π°ΡΡŒΠ΅Π² А.Π’.

(ΠΡ„Π°Π½Π°ΡΡŒΠ΅Π²Π° Π’.Π’.)

Π³. ΠœΠΎΡΠΊΠ²Π°, 2013

1) ΠžΠ±Π·ΠΎΡ€ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹:

АрифмСтичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ - это запись матСматичСской Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ констант, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π·Π½Π°ΠΊΠΎΠ² арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° - постоянная, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰Π°ΡΡΡ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ - это Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰Π°ΡΡΡ мноТСством Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ.

Π‘ΠΊΠΎΠ±ΠΊΠΈ — ΠΏΠ°Ρ€Π½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ для задания ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° матСматичСских ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

2) Вочная Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ:

III.2.7 Π Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ скобки Π² Π°Ρ€ΠΈΡ„мСтичСском Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΡƒΠΊΠ°Π·Π°Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² ΡΠΎΠΎΡ‚вСтствии с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²Π°

3) Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ:

Π Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ скобки Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚. Π΅. опСрация «Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ» самая ΡΡ‚Π°Ρ€ΡˆΠ°Ρ, Π·Π°Ρ‚Π΅ΠΌ «Π΄Π΅Π»Π΅Π½ΠΈΠ΅», ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ опСрация «ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅», Π° ΡΠ°ΠΌΡ‹Π΅ младшиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ «ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅» ΠΈ «Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅» .

4) ОписаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°:

1) Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку посимвольно. ΠžΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ заносим Π² ΠΎΠ΄ΠΈΠ½ массив, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΈΠ½Π΄Π΅ΠΊΡΡ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Π»ΠΈΡΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строку `a+b' запишСм вмассивы ΠΊΠ°ΠΊ: [`a', ``, `b'], [`','+','']).

2) ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΈΡ‰Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ выполнСния.

3) Когда Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ, замСняСм ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ` (+operand1+operation+operand2+) ', ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ сдвиг ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов массива Π½Π° ΠΏΡƒΡΡ‚Ρ‹Π΅ мСста. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ 2.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° OverWrite — Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ мСню Π² Π³Ρ€Π°Ρ„ичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Wind (k: integer) — ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ мСню с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

Ѐункция isOperation (symbol: char): boolean — ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° являСтся Π»ΠΈ символ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ

Ѐункция isRightExpression (inString: string): boolean — ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ выраТСния

Ѐункция getPriority (symbol: char): integer — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Ѐункция arrangeBrackets (inString: string): string — расставляСт скобки Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Work — ΠΏΡƒΠ½ΠΊΡ‚ мСню, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° aboutProgram — ΠΏΡƒΠ½ΠΊΡ‚ мСню, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ свСдСния ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

5) Π‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

арифмСтичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

6) РСализация Π½Π° языкС Π’Π :

unit brackets;

interface

function isOperation (symbol: char): boolean;

function bracketsBalance (inString: string): boolean;

function isRightExpression (inString: string): boolean;

function getPriority (symbol: char): integer;

function arrangeBrackets (inString: string): string;

procedure work;

procedure aboutProgram;

implementation

function isOperation (symbol: char): boolean; // ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° являСтся Π»ΠΈ символ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ

begin

isOperation: = false;

case symbol of

'+': isOperation: = true;

'-': isOperation: = true;

'*': isOperation: = true;

'/': isOperation: = true;

'^': isOperation: = true;

end;

end;

function bracketsBalance (inString: string): boolean; // ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° баланса скобок

var

flag, i: integer;

begin

flag: = 0;

for i: = 1 to Length (inString) do

begin

if ( (inString [i] = ' (') and (flag >= 0)) then

Inc (flag);

if (inString [i] = ') ') then

Dec (flag);

end;

if (flag = 0) then

bracketsBalance: = true

else

bracketsBalance: = false;

end;

function isRightExpression (inString: string): boolean; // ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° являСтся Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ

var

prevFlag, curFlag, flag: boolean;

i: integer;

begin

flag: = true;

prevFlag: = isOperation (inString [1]);

for i: = 2 to Length (inString) do

begin

curFlag: = isOperation (inString [i]);

if ( (prevFlag = true) and (curFlag = true)) then

flag: = false; // Ссли ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символы — ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅

prevFlag: = curFlag;

end;

if (flag = true) then

isRightExpression: = bracketsBalance (inString)

else

isRightExpression: = flag;

end;

function getPriority (symbol: char): integer; // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ расстановки скобок, Ρ‡Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ — Ρ‚Π΅ΠΌ Ρ€Π°Π½ΡŒΡˆΠ΅ выполняСтся опСрация

begin

if ( (symbol = '-') or (symbol = '+')) then

getPriority: = 1

else if (symbol = '*') then

getPriority: = 2

else if (symbol = '/') then

getPriority: = 3

else if (symbol = '^') then

getPriority: = 4;

end;

function arrangeBrackets (inString: string): string;

var

i, m, count, maxPriority, maxPosition: integer;

priorities: array [1.100] of integer;

symbols: array [1.100] of string;

operand, bracketsExpression: string;

begin

m: = 1;

i: = 1;

while i <> Length (inString) + 1 do

begin

if (isOperation (inString [i]) = true) then // Ссли Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символ — опСрация

begin

symbols [m]: = operand; // заносим Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π² ΠΌΠ°ΡΡΠΈΠ² элСмСнтов выраТСния

operand: = ''; // обнуляСм ΠΎΠΏΠ΅Ρ€Π°Π½Π΄

Inc (m); // ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ячСйкС массива

priorities [m]: = getPriority (inString [i]); // заносим Π² ΠΌΠ°ΡΡΠΈΠ² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

symbols [m]: = inString [i]; // заносим ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² ΠΌΠ°ΡΡΠΈΠ² элСмСнтов выраТСния

Inc (m); // ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ячСйкС массива

Inc (count); // ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счСтчик ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

end

else if (inString [i] = ' (') then

begin

while (inString [i + 1] <> ') ') do

begin

Inc (i);

bracketsExpression: = bracketsExpression + inString [i];

end;

symbols [m]: = arrangeBrackets (bracketsExpression);

Inc (m);

bracketsExpression: = '';

if (i < Length (inString) — 1) then

Inc (i)

end

else

operand: = operand + inString [i];

Inc (i);

end;

symbols [m]: = operand;

while (count <> 0) do // ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌ опСрациям

begin

maxPriority: = 0;

i: = 2;

while (i <> m) do

begin

if (priorities [i] >= maxPriority) then // ΠΈΡ‰Π΅ΠΌ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ элСмСнтов выраТСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° с Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ

begin

maxPriority: = priorities [i];

maxPosition: = i;

end;

if (symbols [i] = '') and (symbols [i + 1] <> '') then // ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° элСмСнтов выраТСния пустых ячССк (Ρ‚Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚ послС объСдинСния Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ)

begin

symbols [i]: = symbols [i + 1];

symbols [i + 1]: = '';

priorities [i]: = priorities [i + 1];

priorities [i + 1]: = 0;

i: = 1;

end;

Inc (i);

end;

symbols [maxPosition — 1]: = ' (' + symbols [maxPosition — 1] + symbols [maxPosition] + symbols [maxPosition + 1] + ') '; // объСдиняСм Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ Π² ΠΎΠ΄Π½Ρƒ ячСйку, освободившиСся обнуляСм

symbols [maxPosition]: = '';

symbols [maxPosition + 1]: = '';

priorities [maxPosition]: = 0;

Dec (count);

end;

arrangeBrackets: = symbols [1];

end;

procedure work;

var inString, outString: string;

expressionFlag: boolean;

begin

expressionFlag: = false;

while (expressionFlag <> true) do

begin

writeln ('Please enter a source expression: ');

readln (inString);

expressionFlag: = isRightExpression (inString);

end;

outString: = arrangeBrackets (inString);

writeln (outString);

end;

procedure aboutProgram;

begin

writeln ('ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования ΠΈ Π½Π°ΡƒΠΊΠΈ Π Π€');

writeln ('Московский ГосударствСнный УнивСрситСт лСса');

writeln;

writeln;

writeln ('ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°');

writeln ('ΠΏΠΎ дисциплинС: «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅» ');

writeln ('Π½Π° Ρ‚Π΅ΠΌΡƒ: ');

writeln ('" Расстановка скобок Π² Π°Ρ€ΠΈΡ„мСтичСском Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ" ');

writeln;

writeln;

writeln ('Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»: …');

writeln ('ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»: …');

writeln;

writeln;

writeln ('Москва — 2013');

end;

begin

end.

program III27;

uses CRT, brackets;

const s3 = ' Π’Ρ‹Ρ…ΠΎΠ΄ ';

s2 = ' О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ';

s1 = ' ΠΠ°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ';

Col = 15;

Fon = 0;

FonInv = Col;

ColInv = Fon;

var ActivStr: integer;

c: char;

procedure OverWrite; // Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² мСню

begin

GotoXY (4, ActivStr);

case ActivStr of

7: write (s1);

8: write (s2);

9: write (s3);

end;

end;

Procedure Wind (k: integer); // ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ мСню с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

begin

OverWrite;

ActivStr: = ActivStr + k;

if (ActivStr < 7) then

ActivStr: = 9;

if (ActivStr > 9) then

ActivStr: = 7;

TextBackGround (FonInv);

TextColor (ColInv);

OverWrite;

TextBackGround (Fon);

TextColor (Col);

end;

begin

Activstr: = 7;

while TRUE do

begin

TextBackGround (Fon);

TextColor (Col);

ClrScr;

GotoXY (10,3);

Writeln ('Расстановка скобок');

GotoXY (10,5);

Writeln ('MENU');

GotoXY (4,7);

WRITE (S1);

GotoXY (4,8);

WRITE (S2);

GotoXY (4,9);

WRITE (S3);

WIND (0);

repeat

c: = ReadKey;

if (c = #0) then

begin

c: = ReadKey;

if c = #38 then

WIND (-1);

if c = #40 then

WIND (1);

end;

until c = #13;

case ActivStr of

0:;

7: begin ClrScr; writeln (S1); work; readln; end;

8: begin ClrScr; writeln (S2); aboutProgram; readln; end;

9: begin ClrScr; writeln (S3); Delay (1000); Halt; end;

end;

ClrScr;

end;

end.

7) ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

1.

2.

3.

4.

5.

6. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ошибки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π°Π½ΠΎΠ²ΠΎ:

8) Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ:

Запустив ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ прСдлагаСтся «ΠΠ°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ» с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΡƒΠ·Π½Π°Ρ‚ΡŒ «Πž ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅» ΠΈΠ»ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Ρ‹Π±Ρ€Π°Π² ΠΏΡƒΠ½ΠΊΡ‚ «ΠΠ°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ» откроСтся ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ прСдлагаСтся ввСсти арифмСтичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ВвСдя Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° расставляСт скобки ΠΏΠΎ ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Если Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½ΠΎ со ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ ΠΈΡ…, Π° Π΅ΡΠ»ΠΈ скобки Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ‡Π½Π΅Ρ‚ своС дСйствиС Π·Π°Π½ΠΎΠ²ΠΎ.

9) ВозмоТности для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ:

1. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая расставляСт порядок выполнСния дСйствий

2. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая осущСствляСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° (Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится арифмСтичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅), ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π°Ρ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ записано со ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

3. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ расставлСния скобок Π² Ρ„ункциях (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ sin, cos, tg, log ΠΈ Ρ‚. Π΄.)

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