Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 65
1

Подсчет слов,начинающихся с гласной буквы

11.11.2018, 21:16. Показов 5899. Ответов 20
Метки vba (Все метки)

Author24 — интернет-сервис помощи студентам
Вот функция:
P
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
rivate Sub CommandButton2_Click()
    Dim Gext As String
    Dim res As Integer
    Dim arr(15) As String
    arr(0) = "А"
    arr(1) = "а"
    arr(2) = "Е"
    arr(3) = "е"
    arr(4) = "И"
    arr(5) = "и"
    arr(6) = "О"
    arr(7) = "о"
    arr(8) = "У"
    arr(9) = "у"
    arr(10) = "Э"
    arr(11) = "э"
    arr(12) = "Ю"
    arr(13) = "ю"
    arr(14) = "Я"
    arr(15) = "я"
    Gext = ThisDocument.Range.text
    res = 0
    Dim i As Integer
    For i = 0 To Len(text) - 1 Step 1
            If (ActiveDocument.Characters(i).text = " ") Or (Gext(i).text = "\n") Or (Gext(i) = """") Or (Gext(i) = vbKeyTab) Then
                If (text(i + 1) = "А") Or (text(i + 1) = "а") Or (text(i + 1) = "Е") Or (Gext(i + 1) = "е") Or (Gext(i + 1) = "О") Or (text(i + 1) = "о") Or (text(i + 1) = "И") Or (text(i + 1) = "и") Or (text(i + 1) = "У") Or (text(i + 1) = "у") Or (text(i + 1) = "Э") Or (text(i + 1) = "э") Or (text(i + 1) = "Ю") Or (text(i + 1) = "ю") Or (text(i + 1) = "Я") Or (text(i + 1) = "я") Then
                    res = res + 1
 
    MsgBox "Количество слов, начинающихся на гласную: " & CStr(res)
End Sub
Но при запуске возникает ошибка "extedends array".В чем ошибка?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.11.2018, 21:16
Ответы с готовыми решениями:

Найти количество слов, начинающихся с буквы “б”
Дана текстовая строка. Группы символов, разделенные пробелами (одним или несколькими) и не...

Количество слов в предложении, начинающихся с буквы а
Подсчитать количество слов в предложении, начинающихся с буквы а.

Как определить количество слов, начинающихся с буквы d
Дана последовательность символов латинского алфавита,заканчивающаяся точкой.определить количество...

Определить количество слов, начинающихся с буквы d (слова разделяются пробелом)
1. Дана последовательность символов латинского алфавита, заканчивающаяся точкой. Определить...

20
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
11.11.2018, 21:36 2
ой ой
text - это просто переменная или массив
For i = 0 To Len(text) - 1 Step 1 - вот тут как переменная
If (text(i + 1) = "А") - вот тут как массив
где закрытие цикла For без next
и где закрытие условий If без End If
1
Заблокирован
11.11.2018, 21:43 3
stavatar, что такое
Цитата Сообщение от stavatar Посмотреть сообщение
text
в 24 строке вашего кода?
1
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 65
11.11.2018, 21:45  [ТС] 4
Остап Бонд,опеччатка,там должно быть Gext

Добавлено через 2 минуты
snipe, Это массив.Я хотел считать весь текст в массив и потом пройти по всем элементам массива
0
Заблокирован
11.11.2018, 21:48 5
Здорово!
А что такое Gext, можно полюбопытствовать?
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 65
11.11.2018, 21:50  [ТС] 6
Остап Бонд, не важно.Просто имя переменной
Как мне в итоге сделать верный код?
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
11.11.2018, 21:52 7
1. ну так и операции считывания в массив - нету
2. номер последнего элемента массива определяется функцией Ubound()
3. массив text не описан - взялся с потолка
4. слово text является зарезервированным словом и его использование это моветон
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 65
11.11.2018, 21:54  [ТС] 8
snipe, А как надо считать весь текст в массив?А вообще,как мне более эффективно выполнить подсчет слов,начинающихся на гласную?
Везде где text-это опечатка,должно быть Gext.Именно по причине 4.
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
11.11.2018, 21:57 9
Цитата Сообщение от stavatar Посмотреть сообщение
Как мне в итоге сделать верный код?
тут проблема в том что само условие задачи поставлено очень расплывчато
судя по всему код используется в Word- е
но это только догадки
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 65
11.11.2018, 21:58  [ТС] 10
snipeДа,вы правильно сказали.В Word-e
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
11.11.2018, 22:11 11
ну вы считали диапазон в одну переменную
это у вас Gext
теперь надо удалить лидирующие и концевые пробелы
делается это так
Visual Basic
1
Gext=trim(Gext)
удалить двойные, тройные, четверные и т.д пробелы
Visual Basic
1
2
3
do while instr(1,Gext,"  ")>0
Gext=replace(Gext,"  "," ")
loop
объявим массив
Visual Basic
1
dim tx() as string
заполним массив из переменной
Visual Basic
1
tx()=split(Gext," ")
начнем цикл по перебору ячеек массива tx
Visual Basic
1
For i=0 to Ubound(tx)
начнем цикл по перебору массива arr
Visual Basic
1
for j=0 to 15
сравниваем и сразу считаем
Visual Basic
1
if Left(tx(i),1)=arr(j) then res=res+1
закрываем циклы
Visual Basic
1
2
next j
next i
выводим результат
Visual Basic
1
MsgBox "Количество слов, начинающихся на гласную: " & CStr(res)
и маленькое замечание насколько я помню в русском языке 10 гласных букв
соответственно массив arr() должен иметь 20 элементов
1
Заблокирован
11.11.2018, 22:28 12
Цитата Сообщение от snipe Посмотреть сообщение
в русском языке 10 гласных букв
АЯОЁУЮИЫЕЭ где то так, а по поводу Word'а скажу лишь одно - фуууу, не связывайтесь.
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 65
11.11.2018, 22:52  [ТС] 13
snipe, хм,почему то выводит все равно 0

Добавлено через 1 минуту
Я бы и не связывался,но ВУЗ заставляет
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
11.11.2018, 22:58 14
для начала покажите что у вас получилось
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 65
11.11.2018, 22:59  [ТС] 15
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
Private Sub CommandButton2_Click()
    Dim Gext As String
    Dim res As Integer
    Dim arr(15) As String
    arr(0) = "А"
    arr(1) = "а"
    arr(2) = "Е"
    arr(3) = "е"
    arr(4) = "И"
    arr(5) = "и"
    arr(6) = "О"
    arr(7) = "о"
    arr(8) = "У"
    arr(9) = "у"
    arr(10) = "Э"
    arr(11) = "э"
    arr(12) = "Ю"
    arr(13) = "ю"
    arr(14) = "Я"
    arr(15) = "я"
    Gext = ThisDocument.Range.text
    Gext = Trim(Gext)
    Do While InStr(1, Gext, "  ") > 0
    Gext = Replace(Gext, "  ", " ")
    Loop
    Dim tx() As String
    tx() = Split(Gext, " ")
    For i = 0 To UBound(tx)
    For j = 0 To 15
    b = Left(tx(i), 1)
    If Left(tx(i), 1) = arr(j) Then res = res + 1
    Next j
    Next i
    MsgBox "Количество слов,начинающихся на гласную: " & CStr(res)
End Sub
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
11.11.2018, 23:10 16
тупо взял ваш текст
вставил в документ ворд
запустил и он отработал
файл вот

еще раз говорю про количество гласных у вас отсутствуют буквы Ё и Ы и буква у напечатана 2 раза маленькой
Вложения
Тип файла: zip Кенк.zip (17.1 Кб, 11 просмотров)
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
11.11.2018, 23:12 17
если хотите сказать что с буквы Ы ни чего не начинается то спешу вас разочаровать
в свое время я служил с киргизом и его имя было Ыйсмаил
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 65
11.11.2018, 23:18  [ТС] 18
Почему же мой с моим текстом не работает...
Да,я помню про недостающие буквы
Вложения
Тип файла: docx ЛАБА5ИНФА.docx (21.1 Кб, 10 просмотров)
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
11.11.2018, 23:25 19
Лучший ответ Сообщение было отмечено stavatar как решение

Решение

не знаю - вот ваш файл с рабочим макросом
Вложения
Тип файла: rar ЛАБА5ИНФА.rar (29.8 Кб, 47 просмотров)
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 65
11.11.2018, 23:32  [ТС] 20
Огромное спасибо.
0
11.11.2018, 23:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2018, 23:32
Помогаю со студенческими работами здесь

Подсчет количества слов в тексте, начинающихся с "а"
Как мне решить вот эту задачу? Произвести подсчет числа слов в тексте начинающихся с символа "а"?

Посчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву
"Подсчет слов".Дан файл,содержащий текст на русском языке.Посчитать количество слов,начинающихся и...

В массиве подсчитать количество слов начинающихся с приставки ПРЕ
Задан массив с$ размером N. Подсчитать количество слов начинающихся с приставки ПРЕ

Посчитать в тексте количество слов, начинающихся на латинскую букву
Дан текст документа. Написать на vba макрос, который позволит посчитать количество слов,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru