Информатика, вопрос задал KitKatKa98 , 9 лет назад

Решить либо на С, С++, Pascal

Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы и добавляющую недостающие пробелы. Пробел считается лишним, если он: *стоит в начале строки; * стоит перед знаком препинания; * стоит в конце строки; * следует за пробелом. Добавить пробел после знака препинания, при условии выполнения предыдущих пунктов.

Ответы на вопрос

Ответил Gleb1Kosyrev
0
//Pascal ABC.NET v3.1 сборка 1172

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.

Пример ввода:
Очень, очень ,очень , очень ,очень,очень много слов.
Пример вывода:
Очень, очень, очень, очень, очень, очень много слов.


Новые вопросы