Страница: 1 |
Страница: 1 |
Вопрос: Помогите сбалансировать скобки!!!
Добавлено: 15.12.05 23:17
Автор вопроса: 7395
Подскажите: Как после нажатия на кнопку в текстовом поле происходила проверка скобок и выводилось сообщение об ошибке, если скобки расположены неправильно (Например, ))(( или )(() и т.д.) Т.е. предусмотреть все варианты!!!
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
7395
Вопросов: 10
Ответов: 7
Профиль | | #1
Добавлено: 15.12.05 23:49
Я тут сделал кое=что, но это нужно как=то преобразовать,чтобы при нажатии кнопки, в текстбоксе произошел анализ скобок и выводилось сообщение о том, что баланс скобок нарушен, если конечно таковой есть - например ))(( или )(() и т.д...Хотя я не гарантирую, что написанное ниже правильно...что=то я совсем запутался...ПОдскажите, плиз!!!
Private Sub Command1_Click()
Dim temp() As String
Dim tmp As String
Dim i As Integer
temp = Split(Text1.Text, Chr(34))
tmp = ""
For i = 0 To UBound(temp)
tmp = tmp & temp(i)
Next i
If UBound(Split(tmp, "") <> UBound(Split(tmp, "") Then
 ebug.Print "Êîëè÷åñòâî ñêîáîê íå ñîâïàäàåò"
End If
End Sub
Номер ответа: 2
Автор ответа:
7395
Вопросов: 10
Ответов: 7
Профиль | | #2
Добавлено: 15.12.05 23:54
 ebug.Print "Êîëè÷åñòâî ñêîáîê íå ñîâïàäàåò"
На это можете не смотреть там простое сообщение!!!
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 16.12.05 01:43
k=0
for i=1 to len(s)
if mid(s, i, 1)="" then k=k+1
if mid(s, i, 1)="" then k=k-1
if k<0 then msgbox "error!"
next
if k<>0 then msgbox "error!"
Номер ответа: 4
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #4
Добавлено: 16.12.05 12:29
Sharp,
)()(
- это неправильное выражение у тебя прокатит, я так понимаю, человек делает что-то типа парсера формул..
Номер ответа: 5
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #5
Добавлено: 16.12.05 12:31
Хотя, нет, прокатит - я извиняюсь.
Номер ответа: 6
Автор ответа:
7395
Вопросов: 10
Ответов: 7
Профиль | | #6
Добавлено: 17.12.05 13:32
Вот мой варинат кода - помогите его доработать, а то что-то я в сомнениях, вроде все правильно!!!
Private Sub cmd1_Click()
Dim skobka1, skobka2, s1, s2
Dim stroka$
Dim parn%, a%, k%, i%
stroka = txt1.Text
skobka1 = Split(stroka, ""
skobka2 = Split(stroka, ""
If UBound(skobka1) = UBound(skobka2) Then
txt1.ForeColor = &H0&
Else
txt1.ForeColor = &HFF&
End If
For i = 1 To Len(stroka)
If Mid(stroka, i, 1) = "" Or Mid(stroka, i, 1) = "" Then a = a + 1
Next i
For i = 1 To Len(stroka)
s1 = Mid(stroka, i, 1)
If s1 = "" Then
For k = i + 1 To Len(stroka)
s2 = Mid(stroka, k, 1)
If s2 = "" Then parn = parn + 1
Next k
End If
Next i
txt1.Text = a
If s1 = parn Then
MsgBox "Скобки расставлены верно"
Else: MsgBox "Сбалансированность скобок нарушена"
End If
End Sub
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 18.12.05 02:10
Твой код не работает у меня даже на ()