В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для логической операции «И» – символ «&».
В таблице приведены запросы и количество найденных по ним страниц
некоторого сегмента сети. Считается, что все запросы выполнялись
практически одновременно, так что набор страниц, содержащих все искомые
слова, не изменялся за время выполнения запросов.
Запрос Найдено страниц
(в тысячах)
Конь & Слон & Шахматы 700
Слон & Шахматы 1300
Конь & Шахматы 1500
Какое количество страниц (в тысячах) будет найдено по запросу
(Конь | Слон) & Шахматы?
Var
s,sr:string;
i,j,n:integer;
pr:array of char=('.',',',';',':','!','?');
begin
readln(s);
s:=s.Trim;
var ars:=s.ToWords();
s:='';
for i:=0 to ars.Length-1 do
s+=ars[i]+' ';
s:=s.Trim;
i:=0;
while i<>s.Length do
begin
inc(i);
if (s[i] in pr) and (s[i-1]=' ') then delete(s,i-1,1);
end;
i:=0;
while i<>s.Length-1 do
begin
inc(i);
if (s[i] in pr) and (s[i+1]<>' ') then insert(' ',s,i+1);
end;
s:=s.Trim;
writeln(s);
end.
Пример ввода:
Очень, очень ,очень , очень ,очень,очень много слов.
Пример вывода:
Очень, очень, очень, очень, очень, очень много слов.
var
s,s1:string;
mn:set of char;
i,l:integer;
begin
writeln('Введите строку:');
readln(s);
mn:=['.',',',';',':','!','?'];
while s[1]=' ' do delete(s,1,1);
while s[length(s)]=' ' do delete(s,length(s),1);
while pos(' ',s)>0 do delete(s,pos(' ',s),1);
s1:=s[1];
for i:=2 to length(s)-1 do
if not((s[i]=' ')and(s[i+1] in mn)) then s1:=s1+s[i];
s1:=s1+s[length(s)];
s:=s1[1];
for i:=2 to length(s1)-1 do
if (s1[i] in mn)and(s1[i+1]<>' ') then s:=s+s1[i]+' ' else s:=s+s1[i];
s:=s+s1[length(s1)];
writeln(s);
end.
Пример:
Введите строку:
Дана строка ,состоящая из слов , разделенных пробелами .
Дана строка, состоящая из слов, разделенных пробелами.