Помощь - Поиск - Пользователи - Календарь
Полная версия: Строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
SeRGuS
если в строке встречается . заменить на ...

делал так:

Код

 ............
s:='..';
read (s1);
for i:=1 to length(s1) do
if s[i]='.' then insert(s,s1,i);
 .............


чёт не получается то, что хотел в результате
Altair
Код
const
s1:string='DDD';
var
s:string;
I:byte;
begin
 readln(s);
 While Pos('.',s)<>0 do
 begin
  insert(s1,s,pos(s,'.'));
  delete(s,pos(s,'.'),1);
 end;
 writeln(s);
end.

ТОлько не вздумай менять "." на "..." - при том алгоритме что я дал, убдет бескоенчный цикл.
Altair
вот универсальный алгоритм:
Код
const
s1:string='DDD';
var
s:string;
I,j:byte;
a:array[1..255] of byte;
begin
 readln(s); i:=0;
 While Pos('.',s)<>0 do
 begin
  inc(i);
  a[i]:=pos('.',s);
  delete(s,pos('.',s),1);
 end;
 for j:=1 to i do insert(s1,s,a[j]);
 writeln(s);
end.
SeRGuS
Спасибо за помощь
пожалуйста!
volvo
Oleg_Z
Цитата
вот универсальный алгоритм:

Не такой уж он и универсальный rolleyes.gif
Код
for j:=1 to i do insert(s1,s,a[j]);
Вот тут после первой же вставки вся нумерация нарушится, и дальнейшие вставки приведут к полной бессмыслице... Нужно двигаться вот так:
Код
for j:=i downto 1 do insert(s1,s,a[j]);
тогда ничего не нарушается ;)
Altair
да, точно. smile.gif вот что значит выбрать правильные тесты при проверке решения!
_trminator
Заменить все точки на какой-нибудь неиспользуемый символ (из псевдографики там, или из начала ASCII), а потом этот символ заменить тремя точками =)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.