Символьные строки. Подпрограммы
Задание:
Для каждой введенной строки выделить и напечатать подстроки содержащие только цифры, точки, букву “Е”, знак плюс и минус.Среди выделенных подстрок найти подстроку начинающуюся с наибольшего русских букв. Если подстрока найдена, то преобразовать исходную строку следующим образом:удалить пробелы в начале и в конце строки.
Заранее спасибо.
Цитата:
Originally posted by Long
Для каждой введенной строки выделить и напечатать подстроки содержащие только цифры, точки, букву “Е”, знак плюс и минус.Среди выделенных подстрок найти подстроку начинающуюся с наибольшего русских букв. Если подстрока найдена, то преобразовать исходную строку следующим образом:удалить пробелы в начале и в конце строки.
Для каждой введенной строки выделить и напечатать подстроки содержащие только цифры, точки, букву “Е”, знак плюс и минус.Среди выделенных подстрок найти подстроку начинающуюся с наибольшего русских букв. Если подстрока найдена, то преобразовать исходную строку следующим образом:удалить пробелы в начале и в конце строки.
1. Тебе нужны подстроки, содержащие числа в формате [+|-]111.111e[+|-]111.1111 или любую мешанину перечисленных выше символов?
2. Поточнее насчет русских букв.. Если я что-то в чём-то понимаю выбираемые подстроки ВОБЩЕ не содержат русских букв??? И насчет "наибольшего русских букв" тоже не очень дошло... Наибольшего числа букв или чего?
[FONT=courier new][COLOR=darkblue]
var
LastPos:integer;
function NextSubstr(S:String, Start:integer):string
var
st:integer;
begin
st:=0;
for i:=start to s[0] do
if s in ['0','1','2','3','4','5','6','7','8','9','+','-','.','e','E'] then
begin
if st=0 then st=i;
end
else
begin
if st>0 then break;
end
end;
LastPos:=i;
if st>0 then
NextSubstr:=copy(s,st,i-st)
else
NextSubstr:='';
end;
[/COLOR] [/FONT]
Если вернула пустую строку - запускаешь следующую
NextSubstr(S,1)
, если не пустую -
NextSubstr(S,LastPos)
Если нужно число - почти то же самое, но внутри вместо if s in [????] практичнее всего использовать конечный автомат. (к сожалению паскаль не знает регулярных выражений :))
Нада была так как вы написали.