413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787

Выделить вещественное число из строки

27.02.2015, 13:08. Показов 3321. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток!!Пожалуйста помогите разобраться.Дана строка,содержащая слова,разные символы, вещественные и целые числа.Нужно получить сумму чисел.Во какой огород получился.Работает,но если встречается число с 0 до точки не работает (0.5)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Option Explicit
 
Dim stroka() As String
Dim n As Integer, s As String
Dim sum As Single, kol As Integer, i As Integer
 
Private Sub Form_Click()
List1.Clear
s = InputBox("Введите строку")
List1.AddItem (s) 'записал в List
s = Strings.Trim(s) 'Удалим лишний пробел
Do Until Strings.InStr(s, "  ") = 0 'пока не будет вхождений
    s = Strings.Replace(s, "  ", " ") '
Loop
stroka = Strings.Split(s) 'записываем в массив
n = UBound(stroka)
sum = 0
kol = 0
For i = 0 To n
'если число считаем сумму
    If Strings.Trim(Str(Val(stroka(i)))) = stroka(i) Then
        sum = sum + Val(stroka(i))
        kol = kol + 1 ' считаем количество чисел
    End If
Next
List1.AddItem ("------------------------------------")
If kol = 0 Then
    List1.AddItem ("В строке нет чисел")
Else
    List1.AddItem ("Сумма =" & Str(sum))
End If
 
End Sub
Что я не так делаю?Спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.02.2015, 13:08
Ответы с готовыми решениями:

Из строки выделить подстроку, задающую вещественное число с плавающей точкой
Из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделитьподстроку, задающуювещественноечислосплавающейточкой...

Из строки выделить подстроку, задающую вещественное число с плавающей точкой
Из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделить подстроку, задающую вещественное число с плавающей точкой. ...

Выделить подстроку, задающую вещественное число с фиксированной точкой
Задание: Из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделить подстроку, задающую вещественное число с...

6
 Аватар для Апострофф
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
27.02.2015, 13:29
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Option Explicit
 
Dim stroka() As String
Dim n As Integer, s As String
Dim sum As Single, kol As Integer, i As Integer
 
Private Sub Form_Click()
List1.Clear
s = InputBox("Введите строку")
List1.AddItem (s) 'записал в List
s = Strings.Trim(s) 'Удалим лишний пробел
Do Until Strings.InStr(s, "  ") = 0 'пока не будет вхождений
    s = Strings.Replace(s, "  ", " ") '
Loop
 
s = Replace(s, ".", ",")
 
stroka = Strings.Split(s) 'записываем в массив
n = UBound(stroka)
sum = 0
kol = 0
For i = 0 To n
'если число считаем сумму
  If IsNumeric(stroka(i)) Then
        sum = sum + CDbl(stroka(i))
        kol = kol + 1 ' считаем количество чисел
    End If
Next
List1.AddItem ("------------------------------------")
If kol = 0 Then
    List1.AddItem ("В строке нет чисел")
Else
    List1.AddItem ("Сумма =" & Str(sum))
End If
 
End Sub
1
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
27.02.2015, 13:49
Цитата Сообщение от Genn55 Посмотреть сообщение
Работает,но если встречается число с 0 до точки не работает (0.5)
Тест в окне Immediate
Code
1
2
3
4
?str(0.3)
 .3
?str(-0.3)
-.3
Т.е. Str опускает 0 в этом случае.

Добавлено через 19 минут
Ленивым методом
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Option Explicit
 
Dim stroka() As String
Dim n As Integer, s As String
Dim sum As Single, kol As Integer, i As Integer
 
Private Sub Form_Click()
Dim x, w
Static re As Object
If re Is Nothing Then
  Set re = CreateObject("vbscript.regexp")
  re.Pattern = "[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?" 'http://www.regular-expressions.info/floatingpoint.html
  re.Global = True
End If
 
List1.Clear
s = InputBox("Введите строку")
List1.AddItem (s) 'записал в List
 
Set w = re.execute(s)
sum = 0
kol = w.Count
For Each x In w
    sum = sum + Val(x)
Next
List1.AddItem ("------------------------------------")
If kol = 0 Then
    List1.AddItem ("В строке нет чисел")
Else
    List1.AddItem ("Сумма =" & Str(sum))
End If
 
End Sub
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
27.02.2015, 14:33
Genn55, а почему нельзя после разбиения на слова просто к каждому слову тупо применить VAL и сложить результаты? Если на вход VAL подается не число, результат будет=0, так что сумма не изменится.
1
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
27.02.2015, 17:09  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Genn55, а почему нельзя после разбиения на слова просто к каждому слову тупо применить VAL и сложить результаты? Если на вход VAL подается не число, результат будет=0, так что сумма не изменится.
Это первое о чем я подумал и в данном примере согласен на все 100,но есть и умножение.
Апострофф спасибо большое,я понял свою ошибку.......столько промучился)))))
Казанский в VB6 я полный чайник.Если вас не очень затруднит, раскомментировать этот фрагмент
Visual Basic
1
2
3
4
5
6
7
Dim x, w
Static re As Object
If re Is Nothing Then
  Set re = CreateObject("vbscript.regexp")
  re.Pattern = "[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?" 
  re.Global = True
End If
буду премного благодарен.По ссылке просмотрел пока не очень понял.
Всем огромное спасибо!
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
27.02.2015, 17:26
Лучший ответ Сообщение было отмечено Genn55 как решение

Решение

Genn55, про регулярные выражения применительно в VB/VBS/VBA: http://www.script-coding.com/WSH/RegExp.html
1
18 / 9 / 4
Регистрация: 04.02.2015
Сообщений: 36
01.03.2015, 18:41
Цитата Сообщение от Genn55 Посмотреть сообщение
If Strings.Trim(Str(Val(stroka(i)))) = stroka(i) Then
sum = sum + Val(stroka(i))
kol = kol + 1 ' считаем количество чисел
End If
Можно здесь поставить вместо Str функцию cStr
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.03.2015, 18:41
Помогаю со студенческими работами здесь

В строке выделить подстроку, задающую вещественное число с фиксированной точкой
Из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделить подстроку, задающую вещественное число с фиксированной точкой.

Из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделить подстроку, задающую вещественное
ооочень нужна помощь, задание даже понять особо не могу. нужно из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделить...

Преобразование строки в вещественное число
Здравствуйте! На вход, программа получает вещественное значение в строку Buffer; Необходимо преобразовать эту строку в число типа dd. ...

Вещественное число в виде строки
Здравствуйте. Существует замечательная функция atof(). Есть ли обратная этой функции, т.е. которая вещ. число переводит в строку.

Проверка строки на вещественное число
Все готово, теперь нужно куда-нибудь запихнуть условие, если число будет не только вещественным, но и отрицательным. Подскажите куда его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
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, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru