|
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
|
|
Выделить подстроку, которая соответствует записи вещественного числа23.09.2009, 15:12. Показов 7436. Ответов 29
Метки нет (Все метки)
Как выделить подстроку, которая соответствует записи вещественного числа с плавающей точкой? Мне думается так: считывать строку и если находится в ней одна запятая, то эта та строка, которая мне и нужна, но вот как узнать число ли это?
0
|
|
| 23.09.2009, 15:12 | |
|
Ответы с готовыми решениями:
29
Выделить подстроку, которая соответствует записи вещественного числа
|
|
Почетный модератор
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
||||||
| 23.09.2009, 15:45 | ||||||
|
А в строке только одна запятая, или точка? Приведи пример строк.
Добавлено через 14 минут Как узнать, что это число (в примере вещественное). Если может быть ноль, то поставить такой параметр, которого точно не будет. Можно например написать 0.0001, даже если оно попадется, то при преобразовании все равно не совпадет с точным значением и будет прочитано как число.
0
|
||||||
|
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
|
||
| 23.09.2009, 19:47 [ТС] | ||
|
0
|
||
|
Почетный модератор
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
|
| 23.09.2009, 19:56 | |
|
Так что нужно-то? Взяли манеру полуфразами писать, попробуй догадайся, что тебе надо. Всё секреты своих супер-программ боитесь раскрыть? Тогда не стоит и спрашивать.
0
|
|
|
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
|
||
| 23.09.2009, 20:17 [ТС] | ||
Мне нужно в TComboBox вводить строки, состоящие из букв, цифр, запятых, точек, знаков “+” и “-“. Выделить подстроку, которая соответствует записи вещественного числа с плавающей точкой.
0
|
||
|
Почетный модератор
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
|
| 23.09.2009, 20:29 | |
|
1.Ищи в строке разделитель вещественного числа(точка или запятая).
2.Если перед ним и после него цифра, иди назад по строке пока будут цифры, если цифры кончились и следующий перед ними знак + или -, берем его. 3.Переворачиваем получившуюся строку, это целая часть числа. 4. Тоже вперед от знака, только без + и -, это дробная часть числа. 5. Соединяем через разделитель, получаем число. Это как вариант, можно и по другому.
1
|
|
|
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
|
||||||
| 24.09.2009, 21:44 [ТС] | ||||||
|
Хех, что-то я совсем тупой
У меня что-то даже этот кусок не работает:
0
|
||||||
|
Почетный модератор
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
|
| 24.09.2009, 21:57 | |
|
Во-первых нужно использовать внешний цикл while.
i:=1; while i<=length(s) do begin ищем запятую, if s[i]=',' then нашли, запоминаем индекс , смотрим что стоит слева, если цифра(не знак - или +), то идем влево, опять в цикле while пока идут цифры, составляем слово, кончились цифры, смотрим что следующее, если знак, добавляем его, все. Переворачиваем строку. Потом от индекса, если за ним цифра, также собираем дробную часть, не переворачиваем, закончили, перепрыгиваем через дробную часть(если она есть), ищем следующее число. Ты нарисуй такую строку на бумаге и тренируйся, я же не могу тебе мысленно все передать, тут думать надо, пробовать.
0
|
|
|
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
|
||||||
| 25.09.2009, 15:43 [ТС] | ||||||
|
Хех, я тупой
Вот что я теперь намучал:
0
|
||||||
|
Почетный модератор
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
|
| 25.09.2009, 17:38 | |
|
Еще раз внимательно прочитай мой последний пост и ничего не придумывай. Сразу нашел 2 нарушения.
1. Не проверил, стоит ли слева от разделителя цифра. 2.Нафига заменил while на for? Ведь если while, то смотрит пока цифры, а for все цифры, даже если между ними не цифры. Кроче мозг включи, иначе до пенсии это решать будешь, или копи деньги и во Фриланс.
0
|
|
|
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
|
||||||
| 25.09.2009, 21:23 [ТС] | ||||||
|
У меня зацикливается на этом месте:
0
|
||||||
|
Почетный модератор
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
||||||
| 25.09.2009, 21:39 | ||||||
|
Очень содержательный код. На этом как раз не зациклится.
Подозреваю что в конце цикла перед end; нет типа i:=i+1; А после выделения числа, указатель на индекс не перемещается на нужное место, а именно на следующий символ после числа. Это можно определить как индекс разделителя + длина дробной части. Добавлено через 7 минут Вот посмотри организацию циклов при поиске в строке, где и как начинаются циклы, кончаются. Это из рабочей программы.
0
|
||||||
|
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
|||||||
| 25.09.2009, 21:46 | |||||||
0
|
|||||||
|
Почетный модератор
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
|||||||||||
| 25.09.2009, 22:54 | |||||||||||
|
И вообще все множества, которые есть в программе чтоб не путаться так объявляй константами например
Вот я написал пример поиска вещественных чисел в строке. Писал в Паскале, закинь в консоль, посмотри. Менять ничего не надо.
0
|
|||||||||||
|
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
|
||||||||||||||||
| 25.09.2009, 22:57 [ТС] | ||||||||||||||||
|
Вот очередной вариант моего тупого кода:
Пока что работает так:
но это не строками работа. Добавлено через 59 секунд Так, хорошо, сейчас буду разбираться!
0
|
||||||||||||||||
|
Почетный модератор
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
|
| 25.09.2009, 22:58 | |
|
Кстати знак + наверное не надо, я не помню, функции Делфи воспринимают числа типа +12 как число. Вроде нет.
1
|
|
|
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
|
|
| 25.09.2009, 23:05 [ТС] | |
|
0
|
|
|
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
||||||
| 25.09.2009, 23:20 | ||||||
|
Я чувствую, что проблема в том, что человек измучился уже "ползать" по вложенным циклам и ломать голову "что где и откуда шагается и до каких пор".
Предлагаю, как бы, изменить подход в кодировании. Разбить алгоритм на шаги и соответственно оформить код.Вот написал работающий вариант (на Delphi 7):
--- В функции FindFloatNum() переменные: StrInt : String; StrFrac : String; не нужны. Я сначала думал записать в них целую и дробную часть. Но потом пошёл другим путем...--- А! И я забыл прикрутить чтение знака: "+" или "-". Но это мелочи. Если надо, скажи - приделаю.
1
|
||||||
|
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
|
|
| 26.09.2009, 12:02 [ТС] | |
|
0
|
|
|
Почетный модератор
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
||
| 26.09.2009, 12:27 | ||
|
0
|
||
| 26.09.2009, 12:27 | |
|
Помогаю со студенческими работами здесь
20
Выделить из заданной строки подстроку, которая соответствует записи вещественного числа с плавающей точкой
Выделить подстроку, которая соответствует записи целого числа
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|