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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2012, 02:38   #1
Георгий Златов
 
Регистрация: 19.01.2012
Сообщений: 9
По умолчанию обработка строковых и символьных величин

вводится последовательность символов, заменить все буквы "а" на "б"(только начал изучать паскаль)
Георгий Златов вне форума Ответить с цитированием
Старый 19.03.2012, 05:31   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Код:
for i:=1 to length (stroka) do
  if stroka [i] = 'а' then stroka [i]:= 'б';
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 19.03.2012, 14:38   #3
Георгий Златов
 
Регистрация: 19.01.2012
Сообщений: 9
По умолчанию

так что ли
Код:
S:string;
i:integer;
begin
readln(s)
for I:=1 to length(s) do
if s[i]:='a' then s[i]:='b'
writeln(s);
end.


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

Последний раз редактировалось Serge_Bliznykov; 19.03.2012 в 15:17.
Георгий Златов вне форума Ответить с цитированием
Старый 19.03.2012, 15:18   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
var
  s : string;
  i : integer;
begin
  readln(s);
  for i := 1 to length(s) do
      if s[i] := 'a' then s[i] := 'b';
  writeln(s);
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.03.2012, 15:26   #5
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Не обязательно пробегать всю строку:
Код:
var
  s:string;
  i:byte;
begin
  readln(S);
  while pos('a',s)<>0 do
    begin
      i:=pos('a',s);
      delete(S,i,1);
      insert('b',S,i);
    end;
  writeln(S);
  readln
end.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 19.03.2012, 15:36   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Не обязательно пробегать всю строку
думаю, что вариант с pos() гораздо менее эффективен (да и явно сложнее).
не понимаю, почему Вы считаете что удаление символа из строки и вставка символа в строку лучше, чем банальная замена символа?!

хотя, по сути, согласен, это тоже решает поставленную задачу...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.03.2012, 15:44   #7
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
думаю, что вариант с pos() гораздо менее эффективен (да и явно сложнее).
не понимаю, почему Вы считаете что удаление символа из строки и вставка символа в строку лучше, чем банальная замена символа?!

хотя, по сути, согласен, это тоже решает поставленную задачу...
По поводу эффективности согласен, уже после того как написал подумал.

С другой стороны, предположем, что дана строка, например, "aqqqqqqqqqqqqaqqqqqqa". Тогда, занимаясь отладкой, не придется 21(?) раз тыкать F7 или F8, а только три раза.

Впрочем для данной задачи это не столь важно, но если начать ее усложнять, то вариант с pos будет более выгодным из-за удобства отладки.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка строковых и символьных величин паскаль Георгий Златов Помощь студентам 1 14.03.2012 00:11
Разработка программ обработки символьных и строковых данных(блок-схема) Stellar_light Помощь студентам 0 27.12.2010 20:50
Абстракция. Обработка символьных и строковых переменных. articoli Помощь студентам 0 05.12.2010 22:35
Обработка строковых данных >>arty<< Помощь студентам 4 15.01.2010 23:07
Паскаль... Обработка литерных величин... Сеня Помощь студентам 2 23.02.2009 22:59