Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2013, 17:14   #1
Кирилл_23
Новичок
Джуниор
 
Регистрация: 28.05.2013
Сообщений: 2
Восклицание Принцип "автомата"

Народ, кто хорошо разбирается в вба, помогите пж. Надо довести до ума код, который работал бы по принципу "автомата". Суть: из последовательности нулей и единиц различать последовательность в 00 и чтобы выводилось что программа видит эти 00 и чтобы продолжала проверят строчку до конца.Естественно в строку можно вбивать только 1 и 0, иначе выдает ошибку.
Кто поможет?
сам код

Private Sub CommandButton1_Click()

posled = TextBox1
q = 0
i = 0
For j = 1 To Len(posled)
c = Mid(posled, j, 1)
If c <> 0 Then
If c <> 1 Then
MsgBox "Недопустимые_символы"
GoTo s3

End If
End If

Next j

For i = 1 To Len(posled)
c = Mid(posled, i, 1)
If c = 0 Then
If q = 0 Or q = 1 Then q = q + 1: GoTo s1
If q = 2 Then MsgBox "Проверка_закончена_распознано" : GoTo s2
Else
If q = 0 Then: GoTo s1
If q = 1 Then q = 0: GoTo s1
If q = 2 Then MsgBox "Проверка_закончена_распознано" : GoTo s2
End If

s1:
MsgBox "Символ=" & c
MsgBox "Состояние=" & q

Next i

s2: MsgBox "Состояние=" & q & " "
MsgBox "Не распознал"
s3:
End Sub
Вложения
Тип файла: rar Avtomat.rar (13.5 Кб, 6 просмотров)
Кирилл_23 вне форума Ответить с цитированием
Старый 28.05.2013, 17:32   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Смысл сего действа чисто учебный?
Потому что если нужно узнать, сколько там "00", причём в "000" 1х, то проще сделать на replace:

Код:
Sub tt()
    Dim s$
    s = "1010010001110000011"
    MsgBox (Len(s) - Len(Replace(s, "00", ""))) / 2
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.05.2013, 19:16   #3
Кирилл_23
Новичок
Джуниор
 
Регистрация: 28.05.2013
Сообщений: 2
По умолчанию

Да,всё верно,чисто учебный.
Чуть чуть не верно в начале написал, допустим он видит цепочку из 0 и 1,начинает проверять эту цепочку, присваивает 1-0 значение,а 0-1значение,если след.0-то уже значение 2,вот так типа и видит в цепочки "00" и продолжает проверять дальше
Кирилл_23 вне форума Ответить с цитированием
Старый 29.05.2013, 08:47   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Вы лучше приведите несколько примеров исходных данных, и несколько примеров результирующей строки... вот мне, например, непонятно, что должно получиться в случае вот таких исходных данных: "10000000000000000000000000001"
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Моделирование работы конечного детерминированного автомата" Леська17 Помощь студентам 7 19.05.2016 19:53
Принцип работы "Корзины" на сайте интернет магазина Flangini SQL, базы данных 3 06.04.2013 13:34
Circular unit reference to %s и принцип "1 класс - 1 модуль" Человек_Борща Общие вопросы Delphi 2 04.01.2013 13:22
"Magic Eye" tube- принцип работы Levsha100 Свободное общение 4 06.07.2010 04:07