Найти длинейшую последовательность одинаковых элеменов

Ответить
Iwan_91
Сообщения: 9
Зарегистрирован: 21 май 2009, 21:38
Контактная информация:

22 май 2009, 00:47

Код: Выделить всё

CLS
DIM a(1 TO 10)
FOR i = 1 TO 10
INPUT a(i)
NEXT i

FOR i = 1 TO 9
IF a(i) = a(i + 1) THEN
c = c + 1
END IF
IF c > n THEN
n = c
END IF
NEXT i

IF n <> 0 THEN
n = n + 1
END IF
PRINT n
Задача у программы посчитать максимальное количество подряд идущих елементов.
Почему для точного количества n=n+1?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Как я понимаю к c не прибавльется последний номер.
Другого решения нет?
Мне в принципе не срочно.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

23 май 2009, 00:22

Код: Выделить всё

Const N = 10
Dim a(1 To N)
For i = 1 To N
  a(i) = Cells(1, i)
Next
longestseqpos = -1
longestseqlen = -1
seqpos = 0
seqlen = 0
For i = 1 To N - 1
  If a(i) = a(i + 1) Then
    If seqlen = 0 Then seqpos = i 'если посдедовательность началась,
    'то запоминаем где она начинается
    seqlen = seqlen + 1
  Else
    If seqpos <> 0 Then 'последовательность кончилась
      seqlen = seqlen + 1 'прибавляем последний символ
      If seqlen > longestseqlen Then 'если она оказалась длинее,
        'то запоминаем ее
        longestseqpos = seqpos
        longestseqlen = seqlen
      End If
      seqlen = 0
    End If
  End If
Next

If longestseqpos>-1 Then
  print "Самая длинная цепочка символов"
  print "Начинается с элемента "; longestseqpos
  print "Имеет длину "; longestseqlen
  print "Состоит из значений "; a(longestseqpos)
Else
  print "Нет повторяющихся элементов, идущих подряд"
End If

Iwan_91
Сообщения: 9
Зарегистрирован: 21 май 2009, 21:38
Контактная информация:

23 май 2009, 16:37

Крото.. :D
Спасибо большое.
Куда пиво отправлять? ;)
А в бейсики можно через input вводить сразу 2 переменные, если их через пробел вводят?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

23 май 2009, 20:08

Должно быть можно
INPUT A,B,C
Но возможно, что это не во всех бейсиках поддерживается. Не на чем проверить. К меня вообще бейсика нет. Не пишу я на нём ничего реального.

Если не ошибаюсь, при вводе надо будет отделять пробелами или Enter-ом.
Iwan_91
Сообщения: 9
Зарегистрирован: 21 май 2009, 21:38
Контактная информация:

23 май 2009, 23:36

Через запятую можно(я занаю), но при вводе эта запятая должна быть.. :(
Иначе не работает.
Ладно буду обрабатываьт строку потом..
(В друг просто прогу можно сократить)
На Егэ данные в задачах С4 вводится через пробел..
А егэ уже 26....

Спасибо от души. Не думал что на такой вопрос ответят.
Ответить