Консультация № 110220
20.11.2007, 01:36
0.00 руб.
0 1 1
Здравствуйте!
можете мне помочь решить одну задачку?
1. Преобраховать строку таким образом, чтобы цифры каждого слова были перенесены в конец слова, и изменить порядок следования цифр в слове на обратный
Заранее спасибо! Zhenya_125@mail.ru

Обсуждение

Неизвестный
20.11.2007, 13:10
общий
это ответ
Здравствуйте, Hades!
Вот как это можно сделать. Разделитель слов любой, который не является "обычной" буквой или цифрой (то есть, больше, чем Вы написали в письме).
ЗЫ: по-моему, минифорум вопроса - легкое место для переписки

Приложение:
CONST chars: set of char = [‘A‘..‘Z‘, ‘a‘..‘z‘,‘А‘..‘п‘, ‘р‘..‘я‘]; nums : set of char = [‘0‘..‘9‘]; test: String = ‘abcd c2bd6df1 12345‘;VAR i, k, len, n: Integer; buf, s: String; all: Set of char; contains: Boolean;BEGIN WriteLn(test); all := chars + nums; i:=1; len:=length(test); buf:=‘‘; while i < len do begin {Начало слова} while (NOT (test[i] in all)) and (i <= len) do begin buf:=buf+test[i]; inc(i) end; if i >= len then Break; {Начало найдено - ищем конец и замечаем, есть ли цифры} k:=i; contains:=FALSE; s:=‘‘; while (test[k] in all) and (k <= len) do begin if NOT contains then contains := test[k] in nums; s := s + test[k]; inc(k) end; i:=k; if contains then begin n:=length(s); while n >= 1 do begin if s[n] in nums then begin insert(s[n], s, length(s)+1); delete(s, n, 1); end; dec(n); end end; buf:=buf + s; end; test:=buf; WriteLn(test);END.
Форма ответа