Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы / zad2 / zad1
.pas Program IndexExp;
uses crt;
var
ch: char;
fin: text;
str: string[6];
{Џа®жҐ¤га зЁв Ґв вгЇ® зЁб« Ї® Ї®ап¤Єг.
Ќ ўл室Ґ Ўг¤Ґв з а, ®в«Ёзл© ®в зЁб« }
procedure scanfigure;
begin
read(fin, ch);
write(ch);
if ch in ['0'..'9'] then
scanfigure
end;
{Ђ «Ё§ ®иЁЎ®Є}
procedure error(i: integer);
begin
writeln;
case i of
0: writeln('ЌҐв ЋиЁЎ®Є');
1: writeln('—Ёб«® ¤®«¦® Ўлвм ®ваЁж ⥫мл¬');
2: writeln('ЌҐв § Є а ў®');
3: writeln('€¬п зЁ Ґвбп б ЎгЄўл');
4: writeln('Cва®Є ¤®«¦ зЁ вмбп б const ');
5: writeln('Џ®б«Ґ § Є - ¤®«¦л бв®пвм в®«мЄ® жЁдал ');
6: writeln('‚ Ё¬ҐЁ ¤®«¦ Ўлвм в®«мЄ® 1 ЎгЄў ');
end;
end;
{Џа®жҐ¤га Їа®ўҐаЄ Є®бвагЄжЁЁ.
Џ®б«Ґ read Ё¤св Їа®жҐ¤га writeln зв®Ўл ўЁ§г «м® Ї®Ё¬ вм а Ў®вг Їа®Ја ¬¬л}
procedure simpExpr;
begin
read(fin, str);
write(str);
if str = 'const ' then {Џа®ўҐа塞 «ЁзЁҐ const }
begin
read(fin, ch);
write(ch);
if ch in ['A'..'z'] then {—Ёв Ґ¬ Ё¬п. ЏҐаў п ЎгЄў ўбҐЈ¤ жЁда }
begin
scanfigure; {—Ёв Ґ¬ жЁдал ў Ё¬ҐЁ}
if ch = '=' then
begin
read(fin, ch);
write(ch);
if ch = '-' then {—Ёб«® ®ваЁж ⥫쮥}
begin
scanfigure; {—Ёв Ґ¬ ¬®¤г«м зЁб« }
if (ch = ' ') or (ch = #26) then {Ё ЁйҐ¬ Їа®ЎҐ« Ё«Ё Є®Ґж ᥣ¬Ґв }
error(0)
else
error(5);
end
else {—Ёб«® ¤®«¦® Ўлвм ®ваЁж ⥫мл¬}
error(1)
end
else
if ch in ['A'..'z'] then
error(6)
else{ЌҐв § Є а ў®}
error(2)
end
else {€¬п зЁ Ґвбп б ЎгЄўл}
error(3)
end
else {Cва®Є ¤®«¦ зЁ вмбп б const }
error(4)
end;
begin
{Џ®¤Ј®в®ўЄ д ©« }
assign(fin, 'F:\TPascal\2semestr\zad3\exp.txt');
reset(fin);
{Ђ «Ё§ <®ЇЁб ЁҐ Є®бв вл>}
simpExpr;
readln;
end.
{Ђ «Ё§ Є®бвагЄжЁЁ
const <Ё¬п>=-<зЁб«®>;
<Ё¬п>=<ЎгЄў >|<Ё¬п><жЁда >;
<зЁб«®>=<жЁда >|<зЁб«®><жЁда >;
‚®-ЇҐаўл© ў Їа®Ја ¬¬Ґ ЇаҐ¤гᬮвॠ⮫쪮 1 Їа®ЎҐ« - Ї®б«Ґ const.
‚®-ўв®але Є®бвагЄжЁп ¤®«¦ ®Є зЁў вмбп Їа®ЎҐ« Ё«Ё Є®Ґж ᥣ¬Ґв (бЁ¬ў®« 26).
ЋЎа й о ўЁ¬ ЁҐ зв® ў Ё¬ҐЁ а®ў® 1 ЎгЄў Ё бЄ®«мЄ® гЈ®¤® жЁда, Ё § 票Ґ Є®бв вл - ®ваЁж ⥫쮥 —€‘‹Ћ}
uses crt;
var
ch: char;
fin: text;
str: string[6];
{Џа®жҐ¤га зЁв Ґв вгЇ® зЁб« Ї® Ї®ап¤Єг.
Ќ ўл室Ґ Ўг¤Ґв з а, ®в«Ёзл© ®в зЁб« }
procedure scanfigure;
begin
read(fin, ch);
write(ch);
if ch in ['0'..'9'] then
scanfigure
end;
{Ђ «Ё§ ®иЁЎ®Є}
procedure error(i: integer);
begin
writeln;
case i of
0: writeln('ЌҐв ЋиЁЎ®Є');
1: writeln('—Ёб«® ¤®«¦® Ўлвм ®ваЁж ⥫мл¬');
2: writeln('ЌҐв § Є а ў®');
3: writeln('€¬п зЁ Ґвбп б ЎгЄўл');
4: writeln('Cва®Є ¤®«¦ зЁ вмбп б const ');
5: writeln('Џ®б«Ґ § Є - ¤®«¦л бв®пвм в®«мЄ® жЁдал ');
6: writeln('‚ Ё¬ҐЁ ¤®«¦ Ўлвм в®«мЄ® 1 ЎгЄў ');
end;
end;
{Џа®жҐ¤га Їа®ўҐаЄ Є®бвагЄжЁЁ.
Џ®б«Ґ read Ё¤св Їа®жҐ¤га writeln зв®Ўл ўЁ§г «м® Ї®Ё¬ вм а Ў®вг Їа®Ја ¬¬л}
procedure simpExpr;
begin
read(fin, str);
write(str);
if str = 'const ' then {Џа®ўҐа塞 «ЁзЁҐ const }
begin
read(fin, ch);
write(ch);
if ch in ['A'..'z'] then {—Ёв Ґ¬ Ё¬п. ЏҐаў п ЎгЄў ўбҐЈ¤ жЁда }
begin
scanfigure; {—Ёв Ґ¬ жЁдал ў Ё¬ҐЁ}
if ch = '=' then
begin
read(fin, ch);
write(ch);
if ch = '-' then {—Ёб«® ®ваЁж ⥫쮥}
begin
scanfigure; {—Ёв Ґ¬ ¬®¤г«м зЁб« }
if (ch = ' ') or (ch = #26) then {Ё ЁйҐ¬ Їа®ЎҐ« Ё«Ё Є®Ґж ᥣ¬Ґв }
error(0)
else
error(5);
end
else {—Ёб«® ¤®«¦® Ўлвм ®ваЁж ⥫мл¬}
error(1)
end
else
if ch in ['A'..'z'] then
error(6)
else{ЌҐв § Є а ў®}
error(2)
end
else {€¬п зЁ Ґвбп б ЎгЄўл}
error(3)
end
else {Cва®Є ¤®«¦ зЁ вмбп б const }
error(4)
end;
begin
{Џ®¤Ј®в®ўЄ д ©« }
assign(fin, 'F:\TPascal\2semestr\zad3\exp.txt');
reset(fin);
{Ђ «Ё§ <®ЇЁб ЁҐ Є®бв вл>}
simpExpr;
readln;
end.
{Ђ «Ё§ Є®бвагЄжЁЁ
const <Ё¬п>=-<зЁб«®>;
<Ё¬п>=<ЎгЄў >|<Ё¬п><жЁда >;
<зЁб«®>=<жЁда >|<зЁб«®><жЁда >;
‚®-ЇҐаўл© ў Їа®Ја ¬¬Ґ ЇаҐ¤гᬮвॠ⮫쪮 1 Їа®ЎҐ« - Ї®б«Ґ const.
‚®-ўв®але Є®бвагЄжЁп ¤®«¦ ®Є зЁў вмбп Їа®ЎҐ« Ё«Ё Є®Ґж ᥣ¬Ґв (бЁ¬ў®« 26).
ЋЎа й о ўЁ¬ ЁҐ зв® ў Ё¬ҐЁ а®ў® 1 ЎгЄў Ё бЄ®«мЄ® гЈ®¤® жЁда, Ё § 票Ґ Є®бв вл - ®ваЁж ⥫쮥 —€‘‹Ћ}