Здравствуйте , мне дали задание по информатике написать программу для проверки баланса левых и правых скобок в заданом тексте , в информатике не особо понимаю), написал код, но не могу понять где в нем ошибка, пишет Next without For [vba]
Код
Dim s As String, i, k As Byte s = Range("A2") For i = 1 To Len(s) If Mid(s, i, 1) = "(" Then k = k + 1 ElseIf Mid(s, i, 1) = ")" Then k = k - 1 If n < 0 Then Cells(2, 2) = k End If Next If n = 0 Then Cells(2, 2) = k End Sub
[/vba]
Здравствуйте , мне дали задание по информатике написать программу для проверки баланса левых и правых скобок в заданом тексте , в информатике не особо понимаю), написал код, но не могу понять где в нем ошибка, пишет Next without For [vba]
Код
Dim s As String, i, k As Byte s = Range("A2") For i = 1 To Len(s) If Mid(s, i, 1) = "(" Then k = k + 1 ElseIf Mid(s, i, 1) = ")" Then k = k - 1 If n < 0 Then Cells(2, 2) = k End If Next If n = 0 Then Cells(2, 2) = k End Sub
aleksandr2138, как только научитесь оформлять код правильно на форуме , и вложенность оформлять отступами, так сразу найдете ошибку, правда ваш баланс не сработает если количеста открывающих и закрывающих скобок совпадет, а вот порядок будет неверным "..)..(..)..(.."
aleksandr2138, как только научитесь оформлять код правильно на форуме , и вложенность оформлять отступами, так сразу найдете ошибку, правда ваш баланс не сработает если количеста открывающих и закрывающих скобок совпадет, а вот порядок будет неверным "..)..(..)..(.."bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Сообщение отредактировал bmv98rus - Пятница, 05.04.2019, 19:04
Здравствуйте , мне дали задание по информатике написать программу для проверки баланса левых и правых скобок в заданом тексте , в информатике не особо понимаю), написал код, но не могу понять где в нем ошибка, пишет Run-Time Error 6 [vba]
Код
Dim s As String, i, k As Byte s = Range("A2") For i = 1 To Len(s) If Mid(s, i, 1) = "(" Then k = k + 1 ElseIf Mid(s, i, 1) = ")" Then k = k - 1 End If If k < 0 Then Cells(2, 2) = "баланса нету " End If Next If k = 0 Then Cells(2, 2) = "баланс есть" End If End Sub
[/vba]
Здравствуйте , мне дали задание по информатике написать программу для проверки баланса левых и правых скобок в заданом тексте , в информатике не особо понимаю), написал код, но не могу понять где в нем ошибка, пишет Run-Time Error 6 [vba]
Код
Dim s As String, i, k As Byte s = Range("A2") For i = 1 To Len(s) If Mid(s, i, 1) = "(" Then k = k + 1 ElseIf Mid(s, i, 1) = ")" Then k = k - 1 End If If k < 0 Then Cells(2, 2) = "баланса нету " End If Next If k = 0 Then Cells(2, 2) = "баланс есть" End If End Sub
aleksandr2138, дублировать темы не надо, объединила с прежней По теме [vba]
Код
Sub баланс() Dim s As String, i, k As Byte s = Range("A2") For i = 1 To Len(s) If Mid(s, i, 1) = "(" Then k = k + 1 ElseIf Mid(s, i, 1) = ")" Then k = k - 1 End If Next If k = 0 Then Cells(2, 2) = "баланс есть" Else Cells(2, 2) = "баланса нету " End If End Sub
[/vba]
aleksandr2138, дублировать темы не надо, объединила с прежней По теме [vba]
Код
Sub баланс() Dim s As String, i, k As Byte s = Range("A2") For i = 1 To Len(s) If Mid(s, i, 1) = "(" Then k = k + 1 ElseIf Mid(s, i, 1) = ")" Then k = k - 1 End If Next If k = 0 Then Cells(2, 2) = "баланс есть" Else Cells(2, 2) = "баланса нету " End If End Sub
Александр, на месте преподавателя я бы обратил внимание на следующие моменты: 1. Не обозвана переменная i, там тоже нужно написать As ... 2. Как уже указал выше Михаил, у Вас не обработан случай, когда количество закр и откр скобок одинаково, но их порядок неверен - )(, или ...(...)...)...(..., или )...(.)(.)...( 3. Как уже указал выше Михаил, крайне желательно оформлять код отступами (клавиша Tab), тогда Вам будет гораздо сложнее запутаться В итоге получается [vba]
Код
Sub tt() Dim s As String, i As Byte, k As Byte, t As String t = "баланса нет" s = Range("A2") For i = 1 To Len(s) If Mid(s, i, 1) = "(" Then k = k + 1 ElseIf Mid(s, i, 1) = ")" Then k = k - 1 End If If k < 0 Then Exit For End If Next If k = 0 Then t = "баланс есть" End If Range("B2") = t End Sub
[/vba]
Александр, на месте преподавателя я бы обратил внимание на следующие моменты: 1. Не обозвана переменная i, там тоже нужно написать As ... 2. Как уже указал выше Михаил, у Вас не обработан случай, когда количество закр и откр скобок одинаково, но их порядок неверен - )(, или ...(...)...)...(..., или )...(.)(.)...( 3. Как уже указал выше Михаил, крайне желательно оформлять код отступами (клавиша Tab), тогда Вам будет гораздо сложнее запутаться В итоге получается [vba]
Код
Sub tt() Dim s As String, i As Byte, k As Byte, t As String t = "баланса нет" s = Range("A2") For i = 1 To Len(s) If Mid(s, i, 1) = "(" Then k = k + 1 ElseIf Mid(s, i, 1) = ")" Then k = k - 1 End If If k < 0 Then Exit For End If Next If k = 0 Then t = "баланс есть" End If Range("B2") = t End Sub
Sub ww() Dim s As String s = Selection.Value If Len(s) Mod 2 = Len(Replace(Replace(s, "(", ""), ")", "")) Mod 2 Then MsgBox "Есть" Else MsgBox "Нет" End If End Sub
Sub ww() Dim s As String s = Selection.Value If Len(s) Mod 2 = Len(Replace(Replace(s, "(", ""), ")", "")) Mod 2 Then MsgBox "Есть" Else MsgBox "Нет" End If End Sub
2. Как уже указал выше Михаил, у Вас не обработан случай, когда количество закр и откр скобок одинаково, но их порядок неверен - )(, или ...(...)...)...(..., или )...(.)(.)...(
2. Как уже указал выше Михаил, у Вас не обработан случай, когда количество закр и откр скобок одинаково, но их порядок неверен - )(, или ...(...)...)...(..., или )...(.)(.)...(