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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2013, 10:06   #1
Настен@
Пользователь
 
Регистрация: 13.12.2013
Сообщений: 11
Сообщение исправить код Visual Basic. Задан массив. Определить, входит ли в него последовательность подряд идущих значений элементов 1,2,3.

Задан массив. Определить, входит ли в него последовательность подряд идущих значений элементов 1,2,3. Если да, то с какой позиции?

Вот код, но сказали,что он не правильный....

Код:
Private Sub Form_Load()
    Dim A() As Long, P() As Long
    Dim N As Long, Z As Long
    ReDim A(99)                     ' Массив
    ReDim P(2)                      ' Последовательность
    For N = 0 To 99: A(N) = Rnd * 10: Next
    'A(51) = 1: A(52) = 2: A(53) = 3 ' Последовательность 1,2,3
    P(0) = 1: P(1) = 2: P(2) = 3    ' Последовательность 1,2,3
    N = 0: Z = 0
    Do While N <= UBound(A)
        If A(N) = P(Z) Then
            Z = Z + 1
            If Z > UBound(P) Then
                MsgBox "Входит начиная с позиции " & N - UBound(P)
                Exit Sub
            End If
        Else
            If Z Then
                N = N - Z + 1
                Z = 0
            End If
        End If
        N = N + 1
    Loop
    MsgBox "Не входит"
End Sub
И так тоже не правильно...

Код:
Private Sub Form_Load()
 Dim A(99) As Long, P(2) As Long
    Dim N As Long, Z As Long
    For N = 0 To 99: A(N) = Rnd * 10: Next
    P(0) = 1: P(1) = 2: P(2) = 3
    N = 0: Z = 0
    Do While N <= UBound(A)
        If A(N) = P(Z) Then Z = Z + 1
            If Z > UBound(P) Then
                MsgBox "Входит начиная с позиции " & N - UBound(P)
                Exit Sub
            End If
        Else
            If Z Then
                N = N - Z + 1
                Z = 0
            End If
        End If
        N = N + 1
    Loop
    MsgBox "Не входит"
End Sub

Последний раз редактировалось Настен@; 22.12.2013 в 10:10.
Настен@ вне форума Ответить с цитированием
Старый 22.12.2013, 12:18   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Так работает
Код:
Private Sub Form_Load()
    Dim A(99) As Long, P(2) As Long
    Dim N As Long
    For N = 0 To 99: A(N) = Rnd * 10: Next
    P(0) = 1: P(1) = 2: P(2) = 3
    N = 0: Z = 0
    For N = 0 To UBound(A) - 2
        If A(N) = P(0) And A(N + 1) = P(1) And A(N + 2) = P(2) Then
            MsgBox "Входит начиная с позиции " & N
            Exit Sub
        End If
    Next
    MsgBox "Не входит"
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 22.12.2013, 12:28   #3
Настен@
Пользователь
 
Регистрация: 13.12.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Так работает
Код:
Private Sub Form_Load()
    Dim A(99) As Long, P(2) As Long
    Dim N As Long
    For N = 0 To 99: A(N) = Rnd * 10: Next
    P(0) = 1: P(1) = 2: P(2) = 3
    N = 0: Z = 0
    For N = 0 To UBound(A) - 2
        If A(N) = P(0) And A(N + 1) = P(1) And A(N + 2) = P(2) Then
            MsgBox "Входит начиная с позиции " & N
            Exit Sub
        End If
    Next
    MsgBox "Не входит"
End Sub
к сожалению,нет
Настен@ вне форума Ответить с цитированием
Старый 22.12.2013, 12:46   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

что значит нет?
Аргументируйте.
Проверяется подряд 3 члена массива
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 22.12.2013, 13:08   #5
Настен@
Пользователь
 
Регистрация: 13.12.2013
Сообщений: 11
По умолчанию

А можно увидеть как выглядит ваша программа и код к ней? Может я что-то делаю не правильно...
Настен@ вне форума Ответить с цитированием
Старый 22.12.2013, 13:27   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Можно
Для наглядности вывел на лист
Вложения
Тип файла: rar Входит не входит.rar (10.6 Кб, 18 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 22.12.2013, 14:21   #7
Настен@
Пользователь
 
Регистрация: 13.12.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Можно
Для наглядности вывел на лист
у меня все также...но такую работу преподаватель не принял
Настен@ вне форума Ответить с цитированием
Старый 22.12.2013, 14:47   #8
Настен@
Пользователь
 
Регистрация: 13.12.2013
Сообщений: 11
По умолчанию

а есть варианты другого решения....как-нибудь по-другому???
Настен@ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
1-мерный массив: суммирование подряд идущих элементов 1 знака amm Помощь студентам 6 14.09.2011 19:54
В массиве из n элементов подсчитать количество четырёд идущих подряд одинаковых элементов ( Delphi7 ) Анастасья Помощь студентам 1 31.03.2011 19:23
Как сделать в Excel подсчет максимально подряд идущих значений alvin81 Microsoft Office Excel 2 28.11.2010 08:07
Максимальное кол-во подряд идущих элементов одн. массива cheef Паскаль, Turbo Pascal, PascalABC.NET 6 17.06.2010 13:17
найти подпоследовательность из подряд идущих элементов с наибольшей суммой на С++ aj_tramp Помощь студентам 2 12.12.2008 08:57