Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2010, 16:30   #1
to-ot
 
Регистрация: 02.12.2009
Сообщений: 5
По умолчанию Замена слова one на three нужно исправить

Здраствуйте есть прога которая меняет one на two! А надо чтобы на three меняло как сделать! А то я пробую когда three Он символы в переди себя удаляет!

Код:
var
  s: string;
  i, k: integer;

begin
  k := 0;
  writeln('Vvedite text, vklyuchayushij sochetania "One"');
  readln(s);
  for i := length(s) - 2 downto 1 do
    if ((s[i] = 'o') or (s[i] = 'O')) and (s[i + 1] = 'n') and (s[i + 2] = 'e') then k := i;
  if k = 0 then writeln('Sochetania "one" v texte net')
  else begin
    s[k] := 't';
    s[k + 1] := 'w';
    s[k + 2] := 'o';
    writeln(s);
  end;
  readln;
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 16.12.2010 в 21:39.
to-ot вне форума Ответить с цитированием
Старый 16.12.2010, 17:08   #2
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Цитата:
Сообщение от to-ot Посмотреть сообщение
Здраствуйте есть прога которая меняет one на two! А надо чтобы на three меняло как сделать! А то я пробую когда three Он символы в переди себя удаляет!

var
s:string;
i,k:integer;

begin
k:=0;
writeln('Vvedite text, vklyuchayushij sochetania "One"');
readln(s);
for i:=length(s)-2 downto 1 do
if ((s[i]='o') or (s[i]='O')) and (s[i+1]='n') and (s[i+2]='e') then k:=i;
if k=0 then writeln('Sochetania "one" v texte net')
else begin
s[k]:='t';
s[k+1]:='w';
s[k+2]:='o';
writeln(s);
end;
readln;
end.
попробуй так сделать замену
Код:
while pos('one',s)<>0 do begin
  p:=pos('one',s);
  delete(s,p,3);
  insert('three',s,p);
end;
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 16.12.2010, 17:18   #3
to-ot
 
Регистрация: 02.12.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от rubius2008 Посмотреть сообщение
попробуй так сделать замену
Код:
while pos('one',s)<>0 do begin
  p:=pos('one',s);
  delete(s,p,3);
  insert('three',s,p);
end;
блин в том и дело сказали что бы без функции pos! что бы не delte ne instert ненбыло! через lenght надо!((
to-ot вне форума Ответить с цитированием
Старый 16.12.2010, 17:28   #4
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Цитата:
Сообщение от to-ot Посмотреть сообщение
блин в том и дело сказали что бы без функции pos! что бы не delte ne instert ненбыло! через lenght надо!((
а если самому написать подобные функции? пойдет так?
само собой без использования pos del ins
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 16.12.2010, 18:19   #5
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
var
s:string;
i,k,y:integer;

begin
k:=0;
writeln('Vvedite text, vklyuchayushij sochetania "One"');
readln(s);
for i:=length(s)-2 downto 1 do
if ((s[i]='o') or (s[i]='O')) and (s[i+1]='n') and (s[i+2]='e') then k:=i;
if k=0 then writeln('Sochetania "one" v texte net')
else begin
setlength(s, length(s)+2);
for y:=length(s) downto k+3 do
s[y]:=s[y-2];
s[k]:='t';
s[k+1]:='h';
s[k+2]:='r';
s[k+3]:='e';
s[k+3]:='e';
writeln(s);
end;
readln;
end.
так?
vovk вне форума Ответить с цитированием
Старый 16.12.2010, 21:42   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от vovk
Код:
setlength(s, length(s)+2);
а точно речь идёт о Delphi (ну или об Object Pascal) ?!
дело в том, что в TurboPascal такого излишества не было..

to-ot, решение задачи устраивает?.. Если нет - тогда озвучьте почему (и какой у Вас Pascal)...
и ещё, Pos() использовать нельзя, так? А процедуры Delete и Insert - можно?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.12.2010, 22:30   #7
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

вообщето у меня Free Pascal, но да точно в турбо не будет работать, в общем если турбо то вот это
Код:
setlength(s, length(s)+2);
можно заменить на
Код:
s:=s+'  ';
vovk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и замена строки (слова) ps10n1ck Общие вопросы C/C++ 4 29.10.2010 21:22
Замена символов на слова в строке Shihmars Общие вопросы C/C++ 3 24.01.2010 18:51
Замена одного слова в string строке. Samopal Паскаль, Turbo Pascal, PascalABC.NET 8 19.04.2009 08:03
Замена слова в текстовом редакторе Славный Общие вопросы Delphi 6 06.06.2008 14:19
[Delphi] Замена одного слова на другое... ZhooZhik Помощь студентам 5 09.01.2008 23:31