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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2013, 18:42   #1
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию задача: работа со строками, заменить + на -

постановка задачи:
Цитата:
В заданной строке символов заменить все знаки ‘+’, следующие после пробела на знак ’-‘.
вот как пытался сделать я:
Код:
program lab8var4;
var str: string;
    i,p,p1:integer;
begin
p1:=0;
p:=0;
readln(str);
for i:=1 to length(str) do
begin
(*p:=pos(' ',str);
while (str[]='+') <> 0 do
      begin
      if p>0 then inc(p1);
      delete(str,p,p1);
      insert('-',str,p )
      if (str[i+p]='+') then str[p+1]:='-' *)
if (str[i]=' ') then
      end;
writeln(str);
readln
end.
там собтсвено некоторые предыдущие идеи закоментированы, поправьте помогите сделать что бы было как надо. не до конца могу разобраться.
AlexP777 вне форума Ответить с цитированием
Старый 01.04.2013, 18:46   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

StringReplace по моему не только в дельфи, но и в некоторых версиях паскаля есть. Не?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.04.2013, 18:53   #3
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
StringReplace по моему не только в дельфи, но и в некоторых версиях паскаля есть. Не?
не, не слышал о таком.
можно ссылку на мануал или пример кода?
AlexP777 вне форума Ответить с цитированием
Старый 01.04.2013, 19:07   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Кажется оно :тыц
Poma][a вне форума Ответить с цитированием
Старый 01.04.2013, 19:13   #5
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию

в самом коде программы будет выглядеть так?

Цитата:
function StringReplace(
const S: String;
const +: String;
const -: String;
Flags: TReplaceFlags
):String;
приведите пожалуйста пример.
AlexP777 вне форума Ответить с цитированием
Старый 01.04.2013, 20:02   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
S:=StringReplace(S,'+','-',[rfReplaceAll]);
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 01.04.2013, 21:14   #7
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Код:
S:=StringReplace(S,'+','-',[rfReplaceAll]);
нужно ведь не всех, а только тех, которые следуют после плюса
например так:
было:
++++ +++++ ++
стало: ++++ ----- --
AlexP777 вне форума Ответить с цитированием
Старый 01.04.2013, 21:20   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
p:=pos(' ',str);
if p=0 then p:=length(str);
for i:=1 to length(str) do
  if (i>p) and (str[i]='+') then str[i]:='-';
можно еще проще
Код:
p:=pos(' ',str);
if p=0 then p:=length(str);
for i:=p+1 to length(str) do
  if str[i]='+' then str[i]:='-';
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 01.04.2013 в 21:24.
Аватар вне форума Ответить с цитированием
Старый 01.04.2013, 22:20   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
p:=pos(' ',str);
Ах дак вот кто прививает новичкам вредную привычку обзывать строку str'ом

Могу предложить еще такой вариант :

Код:
i := 1;
while i < Length(s) do begin
      if (s[i] = ' ') and (s[i+1] = '+') then begin
             s[i+1] := '-';
             Inc (i) // убираем a little bit of extra job ;)
      end;
      Inc (i)
end;
Poma][a вне форума Ответить с цитированием
Старый 01.04.2013, 22:22   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Ах дак вот кто прививает новичкам вредную привычку обзывать строку str'ом
Не надо обзываться, я енто из кода ТС взял, лень было новое имя придумать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками. Не большая задача. Yura2 Помощь студентам 2 28.06.2012 22:23
работа со строками.олимпиадная задача. Александра89 Помощь студентам 10 25.11.2011 16:52
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Задача в Visual C++ 6.0, работа со строками Serezhik Visual C++ 6 30.11.2008 20:31
Работа со строками. Задача Memfis_nya Общие вопросы C/C++ 4 16.11.2008 18:42