powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как правильно дописать код?
9 сообщений из 9, страница 1 из 1
Как правильно дописать код?
    #33456311
RavenX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прога должна выполнять проверку на правильность расстановки скобок…я сделал так, что она считает количество скобок вида ( и вида ). Но есть же ситуации когда пр. 2(+2-1) скобка должна стоять после плюса…значит надо проверять на сочетания знак( и )знак…как это выполнить в коде…я уже и не знаю…второй день сижу
Private Sub Command1_Click()
s$ = Text1.Text
k% = 0
z% = 0
For i = 1 To Len(s)
If Mid(s, i, 1) = "(" Then
k = k + 1
End If
If Mid(s, i, 1) = ")" Then
z = z + 1
End If
If z = k Then
Text2.Text = "верно"
End If
If z > k Or z < k Then
Text2.Text = "не верно"
End If
Next i
End Sub

Есть траблы ещё с одной прогой…суть её в том, что бы найти количество слов и цифр (не чисел) в строке. У меня ищет количество чисел, слова тоже ищет (но числа тоже учитывает как слово…прошу заметить не цифры, а числа)
Private Sub Command1_Click()
Dim varArray As Variant
Dim a As String
Dim b As Integer
Dim LAT, K
Dim c As Integer
Dim vu As Integer
a = Text1.Text
varArray = Split(a)
Text2.Text = (UBound(varArray) + 1)
c = Text2.Text
' при вводе символов проверяет по кодовой таблице
For i = 1 To Len(Text1.Text)
K = Asc(Mid(Text1.Text, i, 1))
If (K > 47 And K < 58) Then
LAT = LAT + 1
End If
Next i
vu = LAT
c = c - vu
' вывод результатов после ввода любого символа
Text3.Text = "цифр = " & Str(LAT) & vbCrLf & "слов = " & Str(c)
End Sub

И задача на массивы…Дан массив действительных чисел. Среди них есть равные. Найти первый максимальный элемент массива и заменить его нулем.
Сделал код…он считает только аксиальный элемент…а как его заменить нулём?
Option Explicit
Private Ar() As Integer 'Исходный массив
Private DimAr As Integer 'Размер массивов
Dim xz As Integer

Private Sub Command1_Click()
xz = 1

Dim tyu As String
Dim i As Integer 'Вспомогательные переменные
If (TextDimAr.Text = "") Or (TextMin.Text = "") Or (Textmax.Text = "") Then
MsgBox "Не заданы исходные данные .", vbOKOnly & vbCritical, _
" Обработка массива"
Exit Sub
End If
Randomize 'Инициализация датчика случайных чисел
TextID.Text = ""
TextRes.Text = ""
DimAr = Val(TextDimAr.Text)
ReDim Ar(DimAr) 'Определение размера исходного массива
For i = 1 To DimAr
'Генерация случайного целого числа
Ar(i) = Rnd * (Textmax.Text - TextMin.Text) + TextMin.Text

If Ar(i) < 0 Then
TextID.Text = TextID.Text & " "
End If
TextID.Text = TextID.Text & Str(Ar(i))
Next i
End Sub

Private Sub Command2_Click()
Dim j As Integer
Dim k As Integer
Dim i As Integer

j = Ar(1): k = 1
For i = 2 To DimAr
If Ar(i) > j Then
j = Ar(i): k = i
Ar(i) = 0
Next i
TextRes.Text = "Максимальный элемент массива =" & Str(j)
End Sub
...
Рейтинг: 0 / 0
Как правильно дописать код?
    #33456677
По поводу третьей задачки. Так всеже, что нужно заменить нулем первый максимальный или максимальный?

Первый максимальный так:

Код: plaintext
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.
Sub FindFirstMax()
    Dim aintItems() As Integer
    Dim intI As Integer
    
    ReDim aintItems( 9 )

    Randomize
    
    Debug.Print "Исходная массив:"

    For intI = LBound(aintItems) To UBound(aintItems)
        aintItems(intI) = Int(Rnd *  10 ) +  1 
        Debug.Print aintItems(intI)
    Next intI
    
    Debug.Print "Обработанный массив:"
    
    Call fnFirstMax(aintItems)
    
    For intI = LBound(aintItems) To UBound(aintItems)
        Debug.Print aintItems(intI)
    Next intI
End Sub

Function fnFirstMax( _
  aintArray() As Integer) As Integer
    Dim intItem As Integer
    Dim intMax As Integer
    Dim intI As Integer
    
    intMax = aintArray(LBound(aintArray))
    
    For intI = LBound(aintArray) To UBound(aintArray)
        intItem = aintArray(intI)
        If intItem > intMax Then
            aintArray(intI) =  0 
            Exit For
        End If
    Next intI
End Function

По поводу второй задачки.

Допустим есть строка: "абв 123 где345 клмн", то результат должен быть: слов - 4, цифр - 6, так?
...
Рейтинг: 0 / 0
Как правильно дописать код?
    #33458138
RavenX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ээээ...ну вот пример... Мне 19 лет и 4 месяца
4-слова 3-цифры
...
Рейтинг: 0 / 0
Как правильно дописать код?
    #33458183
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример
строку сплитуешь
Код: plaintext
arr = Split(strIn, " ")
получаешь массив слов
пробегаешься по массиву и проверяешь, число это или нет
Код: plaintext
IsNumeric
по длине этого слова определяешь кол-во цифр

потом от размерности массива отнимаешь кол-во слов, состоящих из чисел

вот и все, но это для вашего конкретного случая, если есть возможность, что слова могут содержать числа пример
Код: plaintext
20centuryFox
и эти цифры нужно тоже сосчитать, то тогда сделать Replace с заменой цифр на пустую строку
и разница между исходным словом и получившемся и будет кол-вом цифр в слове
все это слелать для всех слов и ...
...
Рейтинг: 0 / 0
Как правильно дописать код?
    #33458216
RavenX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если чесно, то до меня это туговато доходит...если можешь, то напиши итоговый код....
...
Рейтинг: 0 / 0
Как правильно дописать код?
    #33458637
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот конкретно твоего примера
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Sub CountNumericWord()

    Dim varArray() As String
    Dim i As Integer
    Dim iNumeric As Integer
    Dim iWord  As Integer
    
    a = "Public Sub CountNumericWord()

    iNumeric =  0 
    iWord =  0 
    
    varArray = Split(a)
    For i =  0  To UBound(varArray)
        If IsNumeric(varArray(i)) Then
            iNumeric = iNumeric + Len(varArray(i))
        Else
            iWord = iWord +  1 
        End If
    Next
    
End Sub
...
Рейтинг: 0 / 0
Как правильно дописать код?
    #33458642
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в предыдущем посте немного напортачил с копированием
и поэтому строку

Код: plaintext
a = "Public Sub CountNumericWord()
надо воспринимать как
Код: plaintext
a = "Мне 19 лет и 4 месяца"

:-)
...
Рейтинг: 0 / 0
Как правильно дописать код?
    #33458657
Код: plaintext
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.
Public Function fnCountWordsAndDigits( _
  ByVal strText As String)
    Dim avarItems As Variant
    Dim intI As Integer
    Dim intJ As Integer
    Dim intWords As Integer
    Dim intDigits As Integer
    
    avarItems = Split(strText, " ")
    
    For intI = LBound(avarItems) To UBound(avarItems)
        If IsNumeric(avarItems(intI)) Then
            intDigits = intDigits + Len(avarItems(intI))
        Else
            ' Если слово - 20centuryFox, считаем цифры в нем.
            For intJ =  1  To Len(avarItems(intI))
                If IsNumeric(Mid(avarItems(intI), intJ,  1 )) Then
                    intDigits = intDigits +  1 
                End If
            Next
            intWords = intWords +  1 
        End If
    Next
    
    Debug.Print "Слов в выражении: " & intWords
    Debug.Print "Цифр в выражении: " & intDigits
End Function

Код: plaintext
1.
2.
?fnCountWordsAndDigits("Мне 19 лет и 4 месяца")
Слов в выражении:  4 
Цифр в выражении:  3 

Код: plaintext
1.
2.
?fnCountWordsAndDigits("Мне 19 лет и 4 месяца 20centuryFox")
Слов в выражении:  5 
Цифр в выражении:  5 

Если, что - доработаешь под частные варианты. Третья задачка подошла?
...
Рейтинг: 0 / 0
Как правильно дописать код?
    #33468361
RavenX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо...работает)))
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как правильно дописать код?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]