Главная страница

Введение 8 Этапы создания Windowsприложения 8


Скачать 6.98 Mb.
НазваниеВведение 8 Этапы создания Windowsприложения 8
АнкорVisual Basic 2005 (word97).doc
Дата22.12.2017
Размер6.98 Mb.
Формат файлаdoc
Имя файлаVisual Basic 2005 (word97).doc
ТипРеферат
#12532
страница41 из 63
1   ...   37   38   39   40   41   42   43   44   ...   63

9.6. Выделение чисел из строки


При анализе слов строки часто возникает необходимость определить, является ли очередное слово числом или нет. Для этого используют следующую комбинацию функций Val и Str: Str(Val(слово)). Если слово, указанное в качестве аргумента функции Val, является числом, то оно не изменится в результате такого преобразования. Но если это число окажется положительным, то перед ним функция Str обязательно добавит один пробел, который потом может быть удален функцией Strings.Trim. Все возможнее варианты преобразований приведены в таблице 13.
Таблица 13

Slovo

Исходная строка

Val

(Slovo)

Str

(Val(Slovo))

Strings.Trim

(Str(Val(Slovo)))

"12"

12

" 12"

"12"

"12а"

12

" 12"

"12"

"1а2"

1

" 1"

"1"

"а12"

0

" 0"

"0"

"аб"

0

" 0"

"0"

"0"

0

" 0"

"0"

"-45"

-45

"-45"

"-45"


Заметим, что исходная строка совпадает с преобразованной только в трех случаях: когда Slovo равно "12", "0" и "-45". Значит, если выполняется условие

Strings.Trim(Str(Val(slovo))) = slovo

то анализируемое слово является числом.

В качестве примера использования этого условия рассмотрим задачу вычисления суммы всех чисел, которые встречаются в произвольной строке текста.

В начале программы вводится строка текста. Затем из нее удаляются лишние пробелы, и формируется массив слов. Массив называется slova(), номер последнего элемента в этом массиве хранится в переменной n.

Для решения задачи нам потребуются две переменные. В переменной summa будет накапливаться сумма всех чисел, встретившихся в строке, а переменная kol нам нужна для подсчета количества этих чисел.

Dim summa, kol As Integer

Задаем начальные значения переменным. Так как до начала анализа массива слов нам не встретилось ни одного числа, то сумма и количество чисел задаются равными нулю.

summa = 0

kol = 0

Организуем цикл для обработки массива слов. Обратите внимание, что слова в массиве нумеруются с нуля.

For i = 0 To n

Анализируем очередной элемент массива.

If Strings.Trim(Str(Val(slova(i)))) = _

slova(i) Then

Если для него выполняется рассмотренное ранее условие, значит, данное слово является числом, и его необходимо включить в общую сумму. Но перед этим слово необходимо преобразовать в число с помощью функции Val.

summa += Val(slova(i))

При этом количество найденных чисел увеличивается на единицу.

kol += 1

End If

Next

После завершения цикла надо распечатать результаты. Сначала выведем горизонтальную черту, чтобы зрительно отделить результаты работы программы от исходных данных.

lstText.Items.Add("--------------------------------")

Анализируем количество найденных чисел.

If kol = 0 Then

Если количество чисел равно нулю, значит, в строке не было ни одного числа, и вычислить их сумму невозможно. В этом случае надо вывести поясняющее сообщение.

lstText.Items.Add("В строке нет чисел")

Else

Иначе печатаем найденную сумму чисел.

lstText.Items.Add("Сумма =" + Str(summa))

End If

Полный текст программы представлен в приложении 46. Пример работы программы приведен на рис. 63.


Рис. 63. Пример работы программы выделения чисел из строки

1   ...   37   38   39   40   41   42   43   44   ...   63


написать администратору сайта