Скачиваний:
42
Добавлен:
22.06.2014
Размер:
10.15 Кб
Скачать
program KP;
uses CRT;
var
n:integer; {ђ §¬Ґа ¬ ЄбЁ¬ «м­®© бва®ЄЁ}
d:integer; {Љ®«-ў® Їа®ЎҐ«®ў ў бва®ЄҐ}
z:integer; {Љ®«-ў® Їгбвле бЁ¬ў®«®ў ў Є®­жҐ бва®ЄЁ ­Ґ¤®бв ойЁе ¤® max бва®ЄЁ}
all:integer; {ЋЎйҐҐ Є®«-ў® Їа®ЎҐ«®ў z+d}
m:integer; {Љ®«-ў® бЁ¬ў®«®ў ў бва®ЄҐ}
c:integer; {Є®«-ў® а §алў®ў ў бва®ЄҐ}
need:integer; {ЌҐ®Ўе®¤Ё¬®Ґ, б।­ҐҐ, Є®«-ў® Їа®ЎҐ«®ў ў Є ¦¤®¬ а §а뢥}
y:integer; {ђ §­Ёж  ў ¤«Ё­Ґ ®вд®а¬ вЁа®ў ­­®© бва®ЄЁ ®в ¬ ЄбЁ¬ «м­®© ЇҐаҐ¤ ўла ў­Ёў ­ЁҐ¬}
i,j:integer; {б«г¦ҐЎ­лҐ ЇҐаҐ¬Ґ­­лҐ ¤«п жЁЄ«®ў}
fin,fou: text;{ЇҐаҐ¬Ґ­­лҐ Ё­ЁжЁ «Ё§ жЁЁ ўе®¤­®Ј® Ё ўл室­®Ј® д ©« }
k:word; {Љ®«-ў® ЎгЄў ў Ё¬Ґ­Ё д ©« }
b:boolean; {”« Ј ­ «ЁзЁп Їа®ЎҐ«  ў ЇаҐ¤л¤г饬 бЁ¬ў®«Ґ, 0-­Ґв Їа®ЎҐ« , 1-Ґбвм Їа®ЎҐ«}
g:boolean; {”« Ј ­ «ЁзЁп ў д ©«Ґ бва®ЄЁ Ў®«миҐ ¬ ЄбЁ¬ «м­® ¤®ЇгбвЁ¬®©}
f:string; {ЏҐаҐ¬Ґ­­ п ¤«п еа ­Ґ­Ёп ⥪г饩 бва®ЄЁ}
name,name_bak:string; {Ё¬Ґ­  д ©«®ў ®аЁЈЁ­ «  Ё १Ґаў­®© Є®ЇЁЁ}
a:array [0..70] of integer; {¬ ббЁў ¤«п еа ­Ґ­Ёп Ї®§ЁжЁ© ­ з « а §алў®ў ў бва®ЄҐ}
e:array [0..70] of integer; {¬ ббЁў ¤«п еа ­Ґ­Ёп Є®«-ў  Їа®ЎҐ«®ў ў Є ¦¤®¬ а §а뢥 бва®ЄЁ}
r:array [0..70] of integer; {¬ ббЁў ¤«п еа ­Ґ­Ёп ¤«Ё­ Є ¦¤®Ј® б«®ў  ў бва®ЄҐ}
const
max = 70; {¬ ЄбЁ¬ «м­® ў®§¬®¦­ п ¤«Ё­  бва®ЄЁ ¤«п а бзсв }
bak = '.bak'; {а биЁаҐ­ЁҐ ¤«п д ©«  १Ґаў­®© Є®ЇЁЁ}
about = '„ ­­ п Їа®Ја ¬¬  ўлЇ®«­Ґ­  бв㤥­в®¬ ’Њ–„Ћ ------------';
big = '‚ д ©«Ґ бгйҐбвўгов бва®ЄЁ а §¬Ґа Є®в®але ЇаҐўли Ґв 70 §­ Є®ў! Џ®б«Ґ ®Ўа Ў®вЄЁ ®­Ё ®бв ­гвмбп ЎҐ§ Ё§¬Ґ­Ґ­Ё©!';

procedure open; {Џа®жҐ¤га  ®вЄалвЁп д ©« , Ё ᮧ¤ ­ЁҐ १Ґаў­®© Є®ЇЁЁ}
begin
k:=pos('.',name); {бзЁвлў ­ЁҐ Є®«-ў  ЎгЄў ў Ё¬Ґ­Ё д ©« }
if k=0 then
k:=length(name)+1;
name_bak:=copy (name,1,k-1)+bak; {ЈҐ­ҐаЁагҐвбп Ё¬п १Ґаў­®Ј® д ©« }
assign (fin,name);
{$I-}
reset(fin);
{$I+}
if IOResult<>0 then {Џа®ўҐаЄ  ®иЁЎ®Є ўў®¤ -ўлў®¤  ЇаЁ ®вЄалвЁЁ д ©« }
begin
writeln ('” ©« ­Ґ ­ ©¤Ґ­!');
halt; {…б«Ё д ©« ­Ґ ­ ©¤Ґ­ в® § Єалвм Їа®Ја ¬¬г}
end;
close (fin);
assign(fou,name_bak); {Џа®ўҐаЄ  ­ «ЁзЁп д ©«  б Ё¬Ґ­Ґ¬ Є Є г १Ґаў­®Ј®}
{$I-}
reset(fou);
{$I+}
if IOResult=0 then
begin
close(fou);
erase(fou); {…б«Ё в Є®© д ©« Ґбвм, в® г­Ёз⮦Ёвм}
end;
rename(fin,name_bak); {ЏҐаҐЁ¬Ґ­®ўлў ­ЁҐ д ©« -®аЁЈЁ­ «  ў д ©« б а биЁаҐ­ЁҐ¬ .bak}
writeln ('‘®§¤ ­  १Ґаў­ п Є®ЇЁп д ©« : ',name_bak);
reset (fin);
assign (fou,name);
rewrite (fou); {‘®§¤ ­ЁҐ д ©«  б® Ёб室­л¬ Ё¬Ґ­Ґ¬, ®вЄалвЁҐ ­  § ЇЁбм}
end; {Є®­Ґж Їа®жҐ¤гал ®вЄалвЁп д ©« }

procedure calc_end; {Џа®жҐ¤га  г¤ «Ґ­Ёп Їа®ЎҐ«®ў ў Є®­жҐ бва®ЄЁ}
begin
m:=length (f); {¤«Ё­  ⥪г饩 бва®ЄЁ}
while f[m]=' ' do {Їа®¤®«¦ вм г¤ «пвм Ї®Є  Ї®б«Ґ¤­Ё© бЁ¬ў®« ­Ґ ЇҐаҐбв ­Ґв Ўлвм Їа®ЎҐ«®¬}
begin
delete (f,m,1); {г¤ «Ёвм Ї®б«Ґ¤­Ё© бЁ¬ў®« ў бва®ЄҐ}
m:=length (f); {­®ў п ¤«Ё­  бва®ЄЁ}
end;
end; {Є®­Ґж Їа®жҐ¤гал г¤ «Ґ­Ёп Їа®ЎҐ«®ў ў Є®­жҐ бва®ЄЁ}

procedure calc_string; {Џа®жҐ¤га   ­ «Ё§  ⥪г饩 бва®ЄЁ (а бзсв  Є®«ЁзҐбвў  Ё а бЇ®«®¦Ґ­Ёп Їа®ЎҐ«®ў Ё в.Ї.)}
begin {4 бва®ЄЁ - ­ з «м­лҐ гбв®­®ўЄЁ}
b:=false; {”« Ј = 0, бЁ¬ў®« ЇаҐ¤Ё¤гйЁ© ⥪г饬㠭Ґ пў«пвбп Їа®ЎҐ«®¬}
d:=0; {ЋЎйҐҐ Є®«-ў® Їа®ЎҐ«®ў ў бва®ЄҐ}
c:=0; {ЋЎйҐҐ Є®«-ў® а §алў®ў ¬Ґ¦¤г б«®ў ¬Ё}
if n>=m then {…б«Ё Є®«-ў® бЁ¬ў®«®ў ў ⥪г饩 бва®ЄҐ ­Ґ ЇаҐўли Ґв ¬ ЄбЁ¬ «м­®Ј® Є®«-ў , в®...}
begin
for i:=1 to m do {Џ®®зҐас¤­ п Їа®ўҐаЄ  ўбҐе бЁ¬ў®«®ў ў бва®ЄҐ}
begin
if f[i]=' ' then {…б«Ё бЁ¬ў®« а ўҐ­ "Їа®ЎҐ«", в®...}
begin
d:=d+1; {... 㢥«ЁзЁвм ­  1 §­ зҐ­ЁҐ ®ЎйҐЈ® Є®«-ў  Їа®ЎҐ«®ў ў ⥪г饩 бва®ЄҐ}
if b=true then {Ґб«Ё ЇҐаҐ¤ нвЁ¬ Їа®ЎҐ«®¬ бв®Ёв Їа®ЎҐ«, в®...}
e[c]:=e[c]+1 {... 㢥«ЁзЁвм ­  1 §­ зҐ­ЁҐ ®ЎйҐЈ® Є®«-ў  Їа®ЎҐ«®ў ў ⥪г饩 бва®ЄҐ}
else {Ґб«Ё ЇҐаҐ¤ ⥪гйЁ¬ Їа®ЎҐ«®¬ бв®Ёв бЁ¬ў®«, в®...}
begin
c:=c+1; {㢥«ЁзЁвм ­  1 §­ зҐ­ЁҐ ®ЎйҐЈ® Є®«-ў  а §алў®ў ў бва®ЄҐ}
a[c]:=i; {‡ ЇЁб вм Ї®§ЁжЁо ­  Є®в®а®© бв®Ёв ¤ ­­л© Їа®ЎҐ«, Є Є Є®®а¤Ё­ вг ­ з «  ¤ ­­®Ј® а §алў }
e[c]:=1; {“бв ­®ўЁвм ®ЎйҐҐ Є®«-ў® Їа®ЎҐ«®ў ў ⥪г饬 а §а뢥 1}
b:=true; {”« Јг ЇаЁбў®Ёвм §­ зҐ­ЁҐ, Ј®ў®ап饥 ¤«п Ї®б«Ґ¤го饣® бЁ¬ў®«  зв® ЇаҐ¤л¤гйЁ© а ўҐ­ " "}
end;
end
else {…б«Ё ⥪гйЁ© бЁ¬ў®« ­Ґ а ўҐ­ Їа®ЎҐ«г, в®...}
b:=false; {...гбв ­®ўЁвм д« Ј ў §­ зҐ­ЁҐ Ј®ў®ап饥 Ї®б«Ґ¤го饬г бЁ¬ў®«г, зв® ЇаҐ¤л¤гйЁ© бЁ¬ў®« ­Ґ а ўҐ­ ""}
end;
for i:=1 to c-1 do {жЁЄ« а бзсв  ¤«Ё­л ўбҐе б«®ў ў ⥪г饩 бва®ЄҐ}
r[i]:=a[i+1]-(a[i]+e[i]);
end;
end; {Љ®­Ґж Їа®жҐ¤гал  ­ «Ё§  ⥪г饩 бва®ЄЁ}

procedure calc_itog; {Џа®жҐ¤га  а бзсв  ­®ў®Ј® Є®«-ў  Їа®ЎҐ«®ў ў бва®ЄҐ}
begin
if n>=m then {…б«Ё Є®«-ў® бЁ¬ў®«®ў ў ⥪г饩 бва®ЄҐ ­Ґ ЇаҐўли Ґв ¬ ЄбЁ¬ «м­®Ј® Є®«-ў , в®...}
begin
if c>0 then {…б«Ё ў ⥪г饩 бва®ЄҐ Ґбвм е®вм ®¤Ё­ а §алў, в®...}
begin
z:=n-m; {ЋЇаҐ¤Ґ«Ґ­ЁҐ Є®«-ў® ­ҐЁбЇ®«м§®ў ­­ле Ї®§ЁжЁ© бЇа ў  ®в Є®­ж  бва®ЄЁ }
all:=z+d; {ЋЎйҐҐ Є®«-ў® Їгбвле Ї®§ЁжЁ© ў ⥪г饩 бва®ЄҐ}
need:=round(all/c);{а бзсв ­Ґ®Ўе®¤Ё¬®Ј® Є®«-ў  Їа®ЎҐ«®ў ў® ўбҐе а §алў е (б ®ЄагЈ«Ґ­ЁҐ¬ ¤® 楫®Ј® зЁб« )}
end;
end;
end;{Є®­Ґж Їа®жҐ¤гал а бзсв  ­®ў®Ј® Є®«-ў  Їа®ЎҐ«®ў ў бва®ЄҐ}

procedure string_edit; {Џа®жҐ¤га  д®а¬Ёа®ў ­Ёп ­®ў®© ⥪Ґг饩 бва®ЄЁ б гзс⮬ ­Ґ®Ўе®¤Ё¬®Ј® Є®«-ў® Їа®ЎҐ«®ў}
begin
if c>0 then {…б«Ё ў ⥪г饩 бва®ЄҐ Ґбвм е®вм ®¤Ё­ а §алў, в®...}
begin
for i:=1 to c do {жЁЄ« § ¬Ґ­л Їа®ЎҐ«®ў, ў а §алў е, ­  ­Ґ®Ўе®¤Ё¬л©}
begin
delete (f,a[i],e[i]); {г¤ «Ґ­ЁҐ ⥪г饣® а §алў  Їгвс¬ г¤ «Ґ­Ёп " " ­ зЁ­ п б Ї®§ЁжЁЁ ЇҐаў®Ј® " " а §а뢥}
a[i+1]:=a[i]+need+r[i]; {а бзсв ᬥ饭Ёп ­ з «м­®© Є®®а¤Ё­ вл б«Ґ¤го饣® а §алў }
for j:=1 to need do
begin
insert (' ',f,a[i]); {ўбв ўЄ  Їа®ЎҐ«®ў}
end;
end;
m:=length(f); {ўлпб­Ґ­ЁҐ ­®ў®© ¤«Ё­л ⥪г饩 бва®ЄЁ}
if m<n then {Ґб«Ё ¤«Ё­  ¬Ґ­миҐ зҐ¬ ­Ґ®Ўе®¤Ё¬® (  ­Ґ®Ўе®¤Ё¬® ¬ Єб.), в®..}
begin {а §­Ёж  ўл室Ёв §  бзсв в®Ј®, зв® ЇаЁ ўлпб­Ґ­ЁЁ ­Ґ®Ўе®¤Ё¬®Ј® Є®«-ў  Їа®ЎҐ«®ў Їа®Ёб室Ё«® ®ЄагЈ«Ґ­ЁҐ}
y:=n-m; {а бзсв а §­Ёжл ¬Ґ¦¤г ­Ґ®Ўе®¤Ё¬®© ¤«Ё­­®©}
for i:=1 to y do {Ї® гб«®ўЁо § ¤ ­Ёп, Є®«-ў® Їа®ЎҐ«®ў ў Є ¦¤®¬ а §а뢥 ¬®¦Ґв ®в«Ёз вмбп ­  1}
insert (' ',f,a[i]); {ўбв ўЄ  Ї® ®¤­®¬г Їа®ЎҐ«г ў а §алўл ­ зЁ­ п б ЇҐаў®Ј® }
end; {Є®«-ў® а §алў®ў ®ЇаҐ¤Ґ«пҐвбп а §­ЁжҐ© ў ¤«Ё­Ґ бва®ЄЁ ®в ­®¬Ё­ « }
if m>n then {Ґб«Ё ¤«Ё­  Ў®«миҐ зҐ¬ ­Ґ®Ўе®¤Ё¬® (  ­Ґ®Ўе®¤Ё¬® ¬ Єб.), в®..}
begin
y:=m-n; {а бзсв а §­Ёжл ў ¤«Ё­Ґ}
for i:=1 to y do
delete (f,a[i],1); {г¤ «Ґ­ЁҐ Ї® ®¤­®¬г Їа®ЎҐ«г Ё§ а §алў®ў ­ зЁ­ п б ЇҐаў®Ј®, Є®«-ў® г¤ «Ґ­ЁҐ = а §­ЁжҐ}
end;
end;
end; {Љ®­Ґж Їа®жҐ¤гал д®а¬Ёа®ў ­Ёп бва®ЄЁ}

begin {ѓ« ў­ п Їа®Ја ¬¬ }
clrscr;
writeln (about); {‚лў®¤ ­  нЄа ­ Ё­д®а¬ жЁЁ ®Ў  ўв®аҐ а Ў®вл}
writeln;
write ('‚ўҐ¤ЁвҐ Ё¬п ⥪бв®ў®Ј® д ©« : '); {‚ў®¤ Ё¬Ґ­Ё । ЄвЁа㥬®Ј® д ©« }
readln (name);
open; {‚맮ў Їа®жҐ¤га  ®вЄалвЁп д ©«  Ё ᮧ¤ ­Ёп १Ґаў­®© Є®ЇЁЁ}
{­ з «м­лҐ гбв ­®ўЄЁ}
n:=0; {Ќ з «м­®Ґ §­ зҐ­ЁҐ ¬ ЄбЁ¬ «м­®© ¤«Ё­л бва®ЄЁ}
g:=false; {ЇаЁбў®Ґ­ЁҐ д« Јг §­ зҐ­Ёп зв® ­Ґв бва®Є >70}
while not eof(fin) do {жЁЄ« а бзсв  ¬ ЄбЁ¬ «м­®© бва®ЄЁ Ї® Є®в®а®© Ўг¤Ґв Їа®Ёб室Ёвм ўла ў­Ёў ­ЁҐ}
begin
readln (fin,f); {бзЁвлў ­ЁҐ ⥪г饩 бва®ЄЁ}
m:=length(f); {бзЁвлў ­ЁҐ ¤«Ё­л ⥪г饩 бва®ЄЁ}
if m>n then {Ґб«Ё ¤«Ё­  ЇаҐўли Ґв 㦥 гбв ­®ў«Ґ­­го ¬ Єб ¤«Ё­г, в®...}
begin
if m<=max then {Ё Ґб«Ё ¤«Ё­  ­Ґ Ў®«миҐ ¬ ЄбЁ¬ «м­® ¤®ЇгбвЁ¬®© в.Ґ. 70}
n:=m; {§ ЇЁблў ­ЁҐ §­ зҐ­Ёп ⥪г饩 ¤«Ё­л бва®ЄЁ Є Є ¬ ЄбЁ¬ «м­®Ј®}
end;
end;
reset(fin); {бЎа®б д ©«  ­  ­ з «®}
while not eof(fin) do {жЁЄ« Ї®®зҐас¤­®© ®Ўа Ў®вЄЁ бва®Є ­  ўла ў­Ёў ­ЁҐ Є ¬ Єб. бва®ЄҐ}
begin
readln (fin,f); {бзЁвлў ­ЁҐ ®зҐаҐ¤­®© бва®ЄЁ}
m:=length(f); {бзЁвлў ­ЁҐ ¤«Ё­л бва®ЄЁ}
if m<=max then {Ґб«Ё ¤«Ё­  ­Ґ ЇаҐўли Ґв ¬ ЄбЁ¬ «м­® ў®§¬®¦­го ¤«Ё­г, в®...}
begin
calc_end; {Їа®жҐ¤га  г¤ «Ґ­Ёп Їа®ЎҐ«®ў ў Є®­жҐ бва®ЄЁ}
calc_string; {Џа®жҐ¤га  а бзсв  Є®«ЁзҐбвў  Ё а бЇ®«®¦Ґ­Ёп Їа®ЎҐ«®ў}
calc_itog; {Џа®жҐ¤га  а бзсв  ­®ў®Ј® а бЇ®«®¦Ґ­Ёп Їа®ЎҐ«®ў}
string_edit; {Џа®жҐ¤га  д®а¬Ёа®ў ­Ёп ­®ў®© бва®ЄЁ}
writeln (fou,f); {§ ЇЁбм Ї®«г祭­®© бва®ЄЁ ў д ©«}
end
else {Ґб«Ё ¤«Ё­  бва®ЄЁ ЇаҐўли Ґв ¬ ЄбЁ¬ «м­® ў®§¬®¦­го, в®...}
begin
writeln (fou,f); {§ ЇЁбм бва®ЄЁ д ©« ЎҐ§ Ё§¬Ґ­Ґ­Ё©}
g:=true; {д« Ј гбв ­ ў«Ёў Ґвбп ў §­ зҐ­ЁҐ зв® Ґбвм бва®Є  >70}
end;
end;
if g=true then {Ґб«Ё ў д ©«Ґ Ґбвм бва®Є  >70, в®...}
writeln (big); {ўл¤ з  ЇаҐ¤гЇаҐ¦¤ о饣® б®®ЎйҐ­Ёп}
close (fin); {§ ЄалвЁҐ д ©«®ў ®аЁЁ­ «  Ё १Ґаў­®© Є®ЇЁЁ}
close (fou);
end. {Є®­Ґж Їа®Ја ¬¬л}