Поиск числа в строке |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Поиск числа в строке |
marwell |
13.10.2011 19:10
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
Добрый вечер
Собственно, само задание: вводится строка, найти в этой строке первое число (может быть с запятой) (учитываются и знаки '+-') в общем из строки типа +-+--+-+-123,345ывыва6254в программа должна вывести -123,345 со знаками разобрался, не получается с запятыми. Чувствую, надо полностью переделывать условие а, да. совсем забыл. Нельзя использовать стандартные процедуры преобразования типов procedure TForm1.Button1Click(Sender: TObject); |
IUnknown |
14.10.2011 12:12
Сообщение
#2
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Открываешь книгу Р. Хантера "Проектирование и конструирование компиляторов" на стр. 45-46, и смотришь, как строится конечный автомат, распознающий в строке вещественное число. Небольшая доработка - и получаешь функцию, которая вернет тебе первое вхождение вещественного числа в строке.
|
marwell |
14.10.2011 14:04
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
Открываешь книгу Р. Хантера "Проектирование и конструирование компиляторов" на стр. 45-46, и смотришь, как строится конечный автомат, распознающий в строке вещественное число. Небольшая доработка - и получаешь функцию, которая вернет тебе первое вхождение вещественного числа в строке. спасибо, попробую а так задачу решил, код вышел длинный и некрасивый, но работающий |
marwell |
14.10.2011 14:04
Сообщение
#4
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
О_о почему то мое сообщение отправилось два раза
Сообщение отредактировано: marwell - 14.10.2011 14:05 |
marwell |
15.10.2011 12:02
Сообщение
#5
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
вот что получилось с использованием конечного автомата
procedure TForm1.Button1Click(Sender: TObject); а вот как было до этого procedure TForm1.Button1Click(Sender: TObject); разница, мягко говоря, огромная Добавлено через 1 мин. IUnknown, спасибо за совет |
IUnknown |
15.10.2011 15:24
Сообщение
#6
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Для твоего случая достаточно:
i := 1;я просто чуть-чуть упростил твой же код, объединил одинаковые (и почти одинаковые, как в случае q=A и q=B) ветки... |
marwell |
15.10.2011 19:55
Сообщение
#7
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
Для твоего случая достаточно: i := 1;я просто чуть-чуть упростил твой же код, объединил одинаковые (и почти одинаковые, как в случае q=A и q=B) ветки... действительно, а я даже не заметил |
marwell |
16.10.2011 11:57
Сообщение
#8
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
еще забыл
надо ... на случай если в строке вовсе нет чисел Сообщение отредактировано: marwell - 16.10.2011 11:58 |
Текстовая версия | 22.09.2024 22:37 |