Отредактировать предложение, удаляя из него лишние пробелы, оставляя только по одному пробелу между словами.
Если возможно, представить алгоритм решения задания.
Заранее, СПАСИБО!
readln(s);
for i:=1 to length(s)do begin
if (s[i]=' ') and (s[i+1]=' ') then begin
a:=i;
repeat
delete(s,a,1);
until (s[a+1]<>' ');
end;
end;
А до этого надо писать uses crt или что-то еще? Если да, то что именно? Заранее спасибо!
Вот полная программа на основе алгоритма Артемия :
var i,a : integer;
s : string;
begin
readln(s);
for i:=1 to length(s)do begin
if (s[i]=' ') and (s[i+1]=' ') then begin
a:=i;
repeat
delete(s,a,1);
until (s[a+1]<>' ');
end;
end;
writeln (s);
readln;
end.
Так не проще?
var
p: integer;
s: string;
begin
readln(s);
{ s := '123 12 1222 12 15'; }
repeat
p := pos(' ', s);
if p > 0 then delete(s, p, 1);
until p = 0;
writeln(s);
end.
А как блок-схема выглядит? Кто-то может помочь составить?
Вот я сам попытался составить блок-схему...
Правильно?
Если нет, то в чем ошибка? Как исправить?
P.S. - схема составлена для программы Алены.
Эскизы прикрепленных изображений
Поищи в поиске... В FAQ есть неплохая функция по разбиению слов на массивы, вот там то и есть код ля убирания доп. пробелов
http://forum.pascal.net.ru/index.php?showtopic=4270&hl=%EF%F0%EE%E3%F0%E0%EC%EC%E0+%EF%EE%F1%F2%F0%EE%E5%ED%E8%FF
?