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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2013, 22:30   #11
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Так-с.. Я понял свою ошибку..
Снимаю своё решение как проф непригодное..
Цитата:
Не надо обзываться, я енто из кода ТС взял, лень было новое имя придумать
Poma][a вне форума Ответить с цитированием
Старый 02.04.2013, 01:38   #12
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию

строку назвал строкой для удобства, ведь это сокращенно str, думаю, страшного в этом ничего нет.

спасибо Аватар`у, сделал вот так:
Код:
program lab8var4;
var str: string;
    i,p:integer;
begin
p:=0;
readln(str);
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]:='-';
writeln(str);
readln
end.
достаточно простое решение, я как раз ходил вокруг него кругами
AlexP777 вне форума Ответить с цитированием
Старый 02.04.2013, 01:40   #13
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Ах дак вот кто прививает новичкам вредную привычку обзывать строку 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;
спасибо за подсказку, возьму такой вариант на заметку, тоже простое решение как оказалось....
AlexP777 вне форума Ответить с цитированием
Старый 03.04.2013, 01:51   #14
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию

тут вот какой момент, при первом предложенном Варианте меняет абсолюнто все + следующие после пробела, и не важно что там может стоять символ
например, если задать строку:
+++++ +++ fd++
то будет так:
---- --- fd--
а ведь как раз после fd "+" должен остаться самим собой...
подскажите, пот здесь сложно придумать какое условие и где нужно дописать.

есть вариант, что нужно искать первым делом не пробел, а позицию +, а затем проверить что справа и слева от него, а потом уже заменять...
AlexP777 вне форума Ответить с цитированием
Старый 03.04.2013, 07:35   #15
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Давайте еще раз.
Дана строка : '+_+_d+_++' ('_' - пробел(для наглядности))
Что будет являться результатом?
Poma][a вне форума Ответить с цитированием
Старый 03.04.2013, 09:37   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Постановка задачи. В заданной строке символов заменить все знаки ‘+’, следующие после пробела на знак ’-‘
Цитата:
тут вот какой момент, при первом предложенном Варианте меняет абсолюнто все + следующие после пробела, и не важно что там может стоять символ...а ведь как раз после fd "+" должен остаться самим собой...
Так это уже другая постановка задачи, вернее не постановка, а что-то типа детского лепета. А если не fd будет, а, например, ka-ka, то это не считается? Или только fd? А если пробел? А может в заданной строке символов заменить все первые встреченные подряд идущие знаки ‘+’, следующие после пробела на знак ’-‘ ?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 03.04.2013 в 09:41.
Аватар вне форума Ответить с цитированием
Старый 03.04.2013, 13:01   #17
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Давайте еще раз.
Дана строка : '+_+_d+_++' ('_' - пробел(для наглядности))
Что будет являться результатом?
результатом будет:
+_-_d-_-
как раз после символа d не должно было заменять.


нужно так, что бы учитывало любой символ fd, то был пример.
если будет стоять ka-ka, то после него не должны меняться + на - до следующего пробела.
AlexP777 вне форума Ответить с цитированием
Старый 03.04.2013, 13:47   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от AlexP777 Посмотреть сообщение
результатом будет:
+_-_d-_-
как раз после символа d не должно было заменять.
так предложенный Вам код и не заменит плюс на минус после d
кроме того, в конце строки было два плюса. Остался один минус.
Куда ещё один символ делся?!

Цитата:
Сообщение от AlexP777 Посмотреть сообщение
нужно так, что бы учитывало любой символ fd, то был пример.
если будет стоять ka-ka, то после него не должны меняться + на - до следующего пробела.
Вы меня за прямоту извините, но Вы вообще непонятно чего хотите.
после каких символов должно менять, после каких - не дожно - ничего не понятно!

Вы бы, хотя бы, если уж не можете сформулировать корректно правила,
тогда написали штук пять-десять характерных примеров, где привели строчку ДО и строчку, которая ДОЛЖНА получиться ПОСЛЕ.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2013, 14:26   #19
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

ТС имхо алгоритм такой: в цикле c помощью Pos ищем вхождение подстроки ' +', если находим начиная с возвращенной Pos-ом позиции перебираем последывательно символы пока равны '+' меняем на '-', если встретили не '+' след итерация цикла, если Pos вернул 0 - выходим. Если в используемом паскале есть PosEx (например в Delphi) используйте его - будет быстрее.
astecenko вне форума Ответить с цитированием
Старый 03.04.2013, 20:20   #20
AlexP777
Пользователь
 
Регистрация: 18.10.2011
Сообщений: 33
По умолчанию

можно наглядный пример как сделать это?
с PosEx не знаком, знаю только немного PASCAL.
AlexP777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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