Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
22 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 88

Найти длину наибольшей возрастающей последовательности

22.02.2012, 12:08. Показов 1831. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Option Explicit
Option Base 1
 
'Дана последовательность действительных чисел а1, а2,..., аn.
'Найти длину наибольшей возрастающей последовательности.
 
Function res(A As Variant) As Integer
        Dim i As Long
   
    For i = 1 To UBound(A) - 1
        If A(i) >= A(i + 1) Then Exit For
    Next i
 
End Function
 
Sub shislo()
    Dim A
    A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1)
    Debug.Print res(A)
End Sub
Добавлено через 1 минуту
Программа написана. Но результат не правильно выдает.
Результат выдает 0.
А надо, чтоб длина была 4 (1, 2, 6, 11)
 Комментарий модератора 
Запрещено дублировать тему в одном или нескольких разделах!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2012, 12:08
Ответы с готовыми решениями:

Найти длину наибольшей возрастающей последовательности
Дана последовательность действительных чисел а1, а2,..., аn. Найти длину наибольшей возрастающей последовательности.

Динамическое программирование: найти длину наибольшей возрастающей подпоследовательности
1. Дана последовательность, требуется найти длину её наибольшей возрастающей подпоследовательности. Вывести найденную...

Дана последовательность, требуется найти длину наибольшей возрастающей подпоследовательности
Дана последовательность, требуется найти длину наибольшей возрастающей подпоследовательности. Входные данные В первой строке входного...

17
Эксперт Hardware
 Аватар для Linoge
3205 / 1915 / 324
Регистрация: 25.10.2011
Сообщений: 5,564
22.02.2012, 15:28
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
Option Base 1
'Дана последовательность действительных чисел а1, а2,..., аn.
'Найти длину наибольшей возрастающей последовательности.
 
Function res(A As Variant) As Integer
    Dim i As Integer
    For i = 1 To UBound(A) - 1
        If A(i) >= A(i + 1) Then Exit For
    Next i
    res = i
End Function
 
Sub shislo()
    Dim A
    A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1)
    Debug.Print res(A)
End Sub
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
22.02.2012, 16:00
А если первый элемент массива будет больше второго?
0
Эксперт Hardware
 Аватар для Linoge
3205 / 1915 / 324
Регистрация: 25.10.2011
Сообщений: 5,564
22.02.2012, 16:21
SoftIce, заставляешь иногда думать
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
Option Base 1
'Дана последовательность действительных чисел а1, а2,..., аn.
'Найти длину наибольшей возрастающей последовательности.
 
Function res(A As Variant) As Integer
    Dim i As Integer
    res = 0
    For i = 1 To UBound(A) - 1
        If A(i) >= A(i + 1) Then res = i: Exit For
    Next i
End Function
 
Sub shislo()
    Dim A
    A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1)
    Debug.Print res(A)
End Sub
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
22.02.2012, 17:40
A = Array(1, 20, 6, 11, 3, 2, 5, 10, 1)
0
 Аватар для Dimon_bogoduhov
127 / 62 / 2
Регистрация: 15.02.2012
Сообщений: 127
22.02.2012, 17:46
попробуй сначала
Visual Basic
1
Function res(byRef A As Variant) As Integer
0
22 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 88
22.02.2012, 17:55  [ТС]
Dimon_bogoduhov,
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Option Explicit
Option Base 1
 
'Дана последовательность действительных чисел а1, а2,..., аn.
'Найти длину наибольшей возрастающей последовательности.
 
Function res(ByRef A As Variant) As Integer
        Dim i As Long
        Dim k As Integer ' количество символов в текущей возростающей последовательности
   
        If UBound(A) - LBound(A) = 0 Then
          res = 1
        Else
          res = 0
        End If
        
        For i = LBound(A) + 1 To UBound(A)
        If A(i) > A(i + 1) Then
          k = k + 1
        Else
          If k + 1 > res Then res = k + 1
          k = 0
        End If
    Next i
    
End Function
 
Sub shislo()
    Dim A
    ' 1, 2, 6, 11, 3, 2, 5, 1, 1, 0, 4, 7, 8, 10, 1
    A = Array(999, 23)
    Debug.Print res(A)
End Sub
На строке If A(i) > A(i + 1) Then выдает ошибка
индекс выходит за пределы допустимого диапазона
0
 Аватар для Dimon_bogoduhov
127 / 62 / 2
Регистрация: 15.02.2012
Сообщений: 127
22.02.2012, 17:58
Вот готовый код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Option Explicit
Option Base 1
 
'Дана последовательность действительных чисел а1, а2,..., аn.
'Найти длину наибольшей возрастающей последовательности.
 
Function res(ByVal A As Variant, ByRef N As Integer) As Integer
        Dim i As Long
        Dim maxKol As Integer
        Dim kol As Integer
        kol = 1
        For i = 1 To UBound(A) - 1
        If A(i) >= A(i + 1) Then
        If maxKol < kol Then maxKol = kol
        kol = 1
        Else
        kol = kol + 1
        End If
    Next i
N = maxKol
End Function
 
Sub shislo()
    Dim A
    Dim Max As Integer
    A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1)
    res A, Max
    MsgBox Max
End Sub
 
Private Sub Form_Click()
shislo
End Sub
0
22 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 88
22.02.2012, 18:22  [ТС]
Dimon_bogoduhov,
Хорошо. А если поменять A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1) на A = Array(999)
Результат 0. А почему не 1?? У нас строго проверяют.
0
 Аватар для Dimon_bogoduhov
127 / 62 / 2
Регистрация: 15.02.2012
Сообщений: 127
22.02.2012, 18:30
Цитата Сообщение от Дмитрий291225 Посмотреть сообщение
A = Array(999)
потомучто цикл у тебя
Цитата Сообщение от Dimon_bogoduhov Посмотреть сообщение
For i = 1 To UBound(A) - 1
и если UBound(A) = 1, то будет For i = 1 To 0

Добавлено через 4 минуты
Вот измененный код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Option Explicit
Option Base 1
 
'Дана последовательность действительных чисел а1, а2,..., аn.
'Найти длину наибольшей возрастающей последовательности.
 
Function res(ByVal A As Variant, ByRef N As Integer) As Integer
        Dim i As Long
        Dim maxKol As Integer
        Dim kol As Integer
        kol = 1
        If UBound(A) = 1 Then
        N = 1
        Exit Function
        End If
    For i = 1 To UBound(A) - 1
        If A(i) >= A(i + 1) And i < UBound(A) Then
            If maxKol < kol Then
            maxKol = kol
            kol = 1
            End If
        Else
        kol = kol + 1
            If maxKol < kol And i = UBound(A) - 1 Then
            maxKol = kol
            End If
        End If
        
    Next i
N = maxKol
End Function
 
Sub shislo()
    Dim A
    Dim Max As Integer
    A = Array(999)
    res A, Max
    MsgBox Max
End Sub
 
Private Sub Form_Click()
shislo
End Sub
0
22 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 88
22.02.2012, 18:31  [ТС]
Dimon_bogoduhov,
А вот например моя написанная вторая программа.
Поменял A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1) на A = Array(999)
Результат 1.
А потом ещё раз поменял A = Array(999) на A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1)
То на строке If A(i) > A(i + 1) Then выдает ошибка
индекс выходит за пределы допустимого диапазона
0
 Аватар для Dimon_bogoduhov
127 / 62 / 2
Регистрация: 15.02.2012
Сообщений: 127
22.02.2012, 18:35
Может ты что то не так сделал??
Скопируй последний код программы и все будет работать. По крайне мери у меня всё работает норм.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
22.02.2012, 18:40
Цитата Сообщение от Дмитрий291225 Посмотреть сообщение
For i = LBound(A) + 1 To UBound(A)

Цитата Сообщение от Дмитрий291225 Посмотреть сообщение
индекс выходит за пределы допустимого диапазона
Должно быть To UBound(A) - 1
0
 Аватар для Dimon_bogoduhov
127 / 62 / 2
Регистрация: 15.02.2012
Сообщений: 127
22.02.2012, 18:42
Цитата Сообщение от SoftIce Посмотреть сообщение
Должно быть To UBound(A) - 1
У меня в коде так оно и стоит.
0
22 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 88
22.02.2012, 18:43  [ТС]
Dimon_bogoduhov, Я скопировал ваш код программы.
A = Array(999) выдает результат 1.
А вот A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1) выдает результат 4.
Все верно.
А теперь A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1, 0, 4, 7, 8, 10, 1) выдает результат 6. Опять ошибка.
0
 Аватар для Dimon_bogoduhov
127 / 62 / 2
Регистрация: 15.02.2012
Сообщений: 127
22.02.2012, 18:55
Попробуй так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Option Explicit
Option Base 1
 
'Дана последовательность действительных чисел а1, а2,..., аn.
'Найти длину наибольшей возрастающей последовательности.
 
Function res(ByVal A As Variant, ByRef N As Integer) As Integer
        Dim i As Long
        Dim maxKol As Integer
        Dim kol As Integer
        kol = 1
        If UBound(A) = 1 Then
        N = 1
        Exit Function
        End If
    For i = 1 To UBound(A) - 1
        If A(i) >= A(i + 1) And i <= UBound(A) - 1 Then
            If maxKol < kol Then
            maxKol = kol
            End If
            kol = 1
        Else
        kol = kol + 1
            If maxKol < kol And i = UBound(A) - 1 And A(i) <= A(i + 1) Then
            maxKol = kol
            End If
        End If
        
    Next i
N = maxKol
End Function
 
Sub shislo()
    Dim A
    Dim Max As Integer
    A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1, 0, 4, 7, 8, 10, 1)
    res A, Max
    MsgBox Max
End Sub
 
Private Sub Form_Click()
shislo
End Sub
1
22 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 88
22.02.2012, 19:13  [ТС]
Dimon_bogoduhov, О!!! Всё верно. Спасибо большое. Извини, что заставил вас....
0
22.02.2012, 19:14

Не по теме:

Цитата Сообщение от Дмитрий291225 Посмотреть сообщение
Извини, что заставил вас....
Ничего, это всемирная взаимовыручка, для того и нужны форумы.
Если что обращайся)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2012, 19:14
Помогаю со студенческими работами здесь

Найти начало наибольшей возрастающей последовательности
Доброго времени суток. Нужно вернуть указатель на начало наибольшей возрастающей последовательности. ( Например {1,4,1,5,2,3,5,0} Ответом...

Найти индекс первого элемента наибольшей по длине возрастающей последовательности
Одномерный массив от 1 до 100. Найти индекс первого элемента наибольшей по длине возрастающей последовательности .

Найти длину наибольшей последовательности упорядочных по возрастанию символов
помогите пожалуйста задачу с файлами Создать файл произвольных символов . Найти длину наибольшей последовательности упорядочных по...

PIE32. в списке символов найти длину наибольшей последовательности
Здравствуйте. Пролистала весь форум но PIE32 так и не нашла. Безуспешно искала в интернете хоть какую-нибудь литературу по данной...

Нахождение наибольшей возрастающей последовательности в матрице
Помогите пожалуйста понять, почему код работает не совсем верно. Мне нужно написать код, который находит длину наибольшей возрастающей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru