Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Проблемы со скобками Добавлено: 24.12.05 19:23  

Автор вопроса:  RavenX
люди помогите...ни как не пойму...есть выражение например 2+(4-1) надо проверить на правильность скобки. Я знаю что надо подсчитать количество скобки вида ( и скобки вида ) и сравнить их число...
Я также понимаю, что надо проверять строку на наличие сочетаний знак( и сочетаний )знак. Так как выражение 2(-4-1) можно рассматривать как неправильное расположение скобки вида ( , не сотря на, то, что количество скобок вида ( и вида ) равное. А как быть с выражением вида 2+(+(3+4)) вообще не знаю (((((
Как это реализовать в коде? Может кто знает…очень нужно(((

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 25.12.05 06:00
посимвольный цикл, если на любом шаге кол-во открытых превышает кол-во закрытых - выражение не правельное, также проверить повтор знаков, т.е. если был "+", то слейдущие могут буть только цифры и ";(" ";)", знак быть неможет. И походу всё...

Ответить

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 25.12.05 07:22
если на любом шаге кол-во открытых превышает кол-во закрытых - выражение не правельное
Наоборот.
Еще после открывающейся скобки может быть только "-" или цифра, после знака может идти только ";(", но никак не ";)"

Ответить

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



Вопросов: 1
Ответов: 1
 Профиль | | #3 Добавлено: 25.12.05 14:47
Эээээээ…….ну чисто теоретически я понимаю, как это реализовать в коде не знаю.
Вот то, что я сделал…тут только сравнивается количество скобок. Для работы кода надо кнопку и два текстовых поля.
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

Ответить

Номер ответа: 4
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #4
Добавлено: 26.12.05 18:38
Ну я знаю вообще то, но это нужно парсер делать. Для скобок рекурсивная процедура нужна, ну и грамматику нужно построить соответствующую. Вобщем если правильную технологию использовать, то там довольно сложно получится. Простым перебором тоже можно, но уже не вспомню как.

Ответить

Страница: 1 |

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



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