Uses crt; var s:string; k,i,dl:integer; begin writeln('Введите строку: '); readln(s); k:=0; i:=1; dl:=length(s); while i<dl do begin if s[i]<>' ' then i:=i+1; if s[i]=' ' then i:=i+1; while s[i]=' ' do delete (s,i,1); if ((s[i]='?') or (s[i]='!') or (s[i]='.') or (s[i]=':') or (s[i]='-')or(s[i]=',')) and (s[i-1]=' ') then begin delete (s,i-1,1); end; dl:=length(s); end; writeln(s); end.
Внимание! Если программа не работает, обновите версию!
begin
ReadlnString.ToWords.JoinIntoString(' ').Println
end.
var s:string; k,i,dl:integer;
begin
writeln('Введите строку: ');
readln(s);
k:=0;
i:=1;
dl:=length(s);
while i<dl do
begin
if s[i]<>' ' then i:=i+1;
if s[i]=' ' then i:=i+1;
while s[i]=' ' do
delete (s,i,1);
if ((s[i]='?') or (s[i]='!') or (s[i]='.') or (s[i]=':') or (s[i]='-')or(s[i]=',')) and (s[i-1]=' ')
then
begin
delete (s,i-1,1);
end;
dl:=length(s);
end;
writeln(s);
end.