Π Π°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΊΠΎΠ±ΠΎΠΊ Π² Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
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 ΠΈ Ρ. Π΄.)