uses crt;
const rz:array[1..18] of char=(#32,#33,#34,#39,#40,#41,#44,#45,#46,#58,#59,
#63,#91,#93,#123,#124,#125,#126);
var f:text;
a:array[1..18] of integer;
name,s:string;
k,kz:longint;
i,j:byte;
begin
clrscr;
write('Имя файла для чтения: ');
readln(name);
name:=name+'.txt';
assign(f,name);
{$I-} reset(f); {$I+}
if IOResult <> 0 then
begin
writeLn('Не могу открыть файл ',name);
writeLn('Работа программы завершена. Нажмите ENTER');
readln;
exit;
end;
for i:=1 to 18 do
a[i]:=0;
k:=0;
kz:=0;
while not eof(f) do
begin
readln(f,s);
k:=k+length(s);
for i:=1 to 18 do
begin
for j:=1 to length(s) do
if rz[i]=s[j] then
begin
kz:=kz+1;
a[i]:=a[i]+1;
end;
end;
end;
close(f);
writeln('Общее количество символов=',k);
writeln('Общее количество знаков препинания=',kz);
writeln('Встреченные знаки препинания и их процент:');
for i:=1 to 18 do
if a[i]>0 then
begin
write(rz[i],' = ');
writeln(a[i]*100/k:5:2,'%');
end;
readln
end.