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

Определить Max количество последовательно расположенных согласных букв во введённом предложении

17.12.2012, 21:07. Показов 2408. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
как это можно сделать? 3 недели мучаюсь помогите пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2012, 21:07
Ответы с готовыми решениями:

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

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

Определить количество гласных и согласных букв в предложении
определить кол-во гласных и согласных букв в предложении

Определить количество букв Е, Ю и Я в введенном предложении. Слова, в которых эти буквы встречаются более одного раза поставить в начале предложения
Помогите пожалуйста с задачей, очень нужно. Там помимо основного задания еще нужно чтоб программа...

7
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,518
17.12.2012, 21:12 2
Dmitriy_mrg, выложите свой код, пусть он и неправильный. Может кто-нибудь поможет вам.
0
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 14
17.12.2012, 21:17  [ТС] 3
Пишу коряво стыдно выкладывать(

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
Public Sub zad6()
Dim d, ks, kg, kp, i As Integer
Dim P, sim, gl, sgl As String
gl = "[a,e,y,u,i]"
sgl = "[z,x,c,v,b,n,m]"
ks = 0
kg = 0
kp = 0
i = 1
P = InputBox(P)
d = Len(P)
sim = Mid(P, i, 1)
If sim Like gl Then
kg = kg + 1
i = i + 1
If i <= d Then
sim = Mid(P, i, 1)
ElseIf kg > kp Then
kp = kg
MsgBox (kg)
Else
MsgBox (kg)
End If
End If
If sim Like sgl Then
ks = ks + 1
i = i + 1
If i <= d Then sim = Mid(P, i, 1)
ElseIf ks > kp Then
kp = ks
MsgBox (ks)
Else
MsgBox (ks)
End If
End Sub
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,518
17.12.2012, 21:55 4
Код:
Кликните здесь для просмотра всего текста
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Public Sub zad6()
 
    Dim sSentence  As String
    Dim sgl As String
    Dim Max_1 As Integer, Max_2 As Integer
    'Boolean означает, что в переменной может быть
    'только текст "True" или "False".
    Dim bFlag As Boolean
    Dim i As Integer
    
    'Создаём шаблон для команды "Like".
    sgl = "[bcdfghjklmnpqrstvwxyz]"
    
    'Помещаем предложение в переменную.
    sSentence = InputBox("Введите предложение:")
    
    'С помощью цикла просматриваем все символы в строке.
    For i = 1 To Len(sSentence) Step 1
    
        'Нужно обработать момент: является ли текущий символ последним или нет.
        If Mid(sSentence, i, 1) Like sgl And i = Len(sSentence) Then
        
                'Подсчитываем, сколько согласных идут подряд.
                Max_2 = Max_2 + 1
            
                'Если при очерёдном подсчёте согласных букв
                'оказалось больше, то помещаем количество
                'согласных букв в переменную "Max_1".
                If Max_2 > Max_1 Then
                    Max_1 = Max_2
                End If
        
        'Если символ является согласной буквой.
        ElseIf Mid(sSentence, i, 1) Like sgl Then
        
            'Помещаем в переменную "bFlag" текст "True".
            '"True" в переменной "bFlag" будет означать, что
            'была обнаружена согласная буква.
            'А "False" - что символ не является согласной буквой.
            bFlag = True
    
            'Подсчитываем, сколько согласных идут подряд.
            Max_2 = Max_2 + 1
            
        'Если не согласная буква, то делаем пометку.
        Else
            
            'Если до этого были согласные буквы, то
            'анализируем результат.
            If bFlag = True Then
                'Если при очерёдном подсчёте согласных букв
                'оказалось больше, то помещаем количество
                'согласных букв в переменную "Max_1".
                If Max_2 > Max_1 Then
                    Max_1 = Max_2
                End If
                
                'Подготавливаем переменные к следующему использованию.
                bFlag = False
                Max_2 = 0
                
            End If
            
        End If
        
    Next i
    
    'Выводим результат.
    MsgBox "Результат: " & Max_1
    
End Sub
1
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
17.12.2012, 22:18 5
Вариант. При подсчете последовательных согласных, пробелы и знаки препинания игнорируются.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Const GLAS$ = "аеёиоуыэюя"
Const SOGL$ = "бвгджзйклмнпрстфчцчшщ"
 
Sub bb()
Dim s$, c$, max&, cur&, i&
s = InputBox("Введите строку для анализа", , "Муравей? Стрекоза!")
For i = 1 To Len(s)
    c = Mid$(s, i, 1)
    If InStr(1, SOGL, c, vbTextCompare) Then
        cur = cur + 1
    ElseIf InStr(1, GLAS, c, vbTextCompare) Then
        If cur > max Then max = cur
        cur = 0
    End If
Next
If cur > max Then max = cur
MsgBox "Макс. посл. согл.: " & max
End Sub
1
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 14
17.12.2012, 23:05  [ТС] 6
Спасибо огромное!!! Вы мегалюди)))) теперь стало всё понятно)))

Добавлено через 2 минуты
А вот если

В строке символов определить Max количество последовательно расположенных согласных и гласных символов.

то как быть? что и как добавить, примерно представляю что там нужно условие если и иначе, можно минимально изменив вышеуказанные коды программ, получить для решения этой?
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
17.12.2012, 23:57 7
А сразу нельзя было полное условие задачи написать?
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
Const GLAS$ = "аеёиоуыэюя"
Const SOGL$ = "бвгджзйклмнпрстфчцчшщ"
 
Sub bb()
Dim s$, c$, maxG&, maxS&, curG&, curS&, i&
s = InputBox("Введите строку для анализа", , "Муравей? Стрекоза-а-а!")
For i = 1 To Len(s)
    c = Mid$(s, i, 1)
    If InStr(1, SOGL, c, vbTextCompare) Then
        If curG > maxG Then maxG = curG
        curG = 0
        curS = curS + 1
    ElseIf InStr(1, GLAS, c, vbTextCompare) Then
        If curS > maxS Then maxS = curS
        curS = 0
        curG = curG + 1
    End If
Next
If curG > maxG Then maxG = curG
If curS > maxS Then maxS = curS
 
MsgBox "Макс. посл. согл.: " & maxS & vbLf & _
    "Макс. посл. гласн.: " & maxG
End Sub
1
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 14
18.12.2012, 00:38  [ТС] 8
Это две разные задачи просто, ато бы я сразу в первой же условие второй дал)

Добавлено через 7 минут
Кликните здесь для просмотра всего текста
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
37
38
39
40
41
42
43
44
45
Public Sub zad6()
    Dim sSentence  As String
    Dim sgl As String
    Dim gl As String
    Dim Max_1 As Integer, Max_2 As Integer, Max_3 As Integer, Max_4 As Integer
    Dim bFlag As Boolean
    Dim i As Integer
    sgl = "[bcdfghjklmnpqrstvwxz]"
    gl = "[aeyuio]"
    sSentence = InputBox("Введите предложение:")
    For i = 1 To Len(sSentence) Step 1
        If Mid(sSentence, i, 1) Like sgl And i = Len(sSentence) Then
                Max_2 = Max_2 + 1
                If Max_2 > Max_1 Then
                    Max_1 = Max_2
                End If
        ElseIf Mid(sSentence, i, 1) Like sgl Then
            bFlag = True
            Max_2 = Max_2 + 1
        Else                 
            If bFlag = True Then
                If Max_2 > Max_1 Then
                    Max_1 = Max_2
                End If               
            End If
        End If
If Mid(sSentence, i, 1) Like gl And i = Len(sSentence) Then
                Max_4 = Max_4 + 1
                If Max_4 > Max_3 Then
                    Max_3 = Max_4
                End If
        ElseIf Mid(sSentence, i, 1) Like gl Then
            bFlag = True
            Max_4 = Max_4 + 1
        Else                 
            If bFlag = True Then
                If Max_4 > Max_3 Then
                    Max_3 = Max_4
                End If              
            End If
        End If      
    Next i
    MsgBox "Результат: " & Max_1
    MsgBox "Результат: " & Max_3    
End Sub


Добавлено через 15 секунд
А что тут то неверно?)

Добавлено через 15 минут
Сам разобрался)) Просто добавил во втоорую часть где программа работает с согласными переменную булин bflag_2
и всё заработало)))) Спасибо вам огромное парни!! Ну и девушки естественно тоже, если они тут имели место быть
0
18.12.2012, 00:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2012, 00:38
Помогаю со студенческими работами здесь

Количество гласных и согласных букв в предложении.
Помогите пожалуйста с заданием.. с количеством сделала, а с процентами не могу 5. С клавиатуры...

Найти количество согласных букв в предложении
Для каждого слова заданного предложения указать количество согласных. Определить слово, в котором...

Подсчитать количество гласных и согласных букв в предложении
Помогите пожалуйста не сильно понимаю в такой теме : Дано предложение . Подсчитать количество...

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


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

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