Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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
   ;Debug.Print "&#202;&#238;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238; &#241;&#234;&#238;&#225;&#238;&#234; &#237;&#229; &#241;&#238;&#226;&#239;&#224;&#228;&#224;&#229;&#242;"
End If
End Sub

Ответить

Номер ответа: 2
Автор ответа:
 7395



Вопросов: 10
Ответов: 7
 Профиль | | #2 Добавлено: 15.12.05 23:54
 ;Debug.Print "&#202;&#238;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238; &#241;&#234;&#238;&#225;&#238;&#234; &#237;&#229; &#241;&#238;&#226;&#239;&#224;&#228;&#224;&#229;&#242;"

На это можете не смотреть там простое сообщение!!!

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #4
Добавлено: 16.12.05 12:29
Sharp,
)()(
- это неправильное выражение у тебя прокатит, я так понимаю, человек делает что-то типа парсера формул..

Ответить

Номер ответа: 5
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 18.12.05 02:10
Твой код не работает у меня даже на ()

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам