С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Lata

В массиве из 20 элементов, найти 5 соседних элементов, сумма которых максимальна

26.03.2013, 20:33. Показов 2358. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень прошу помочь. Что не правильно?
Условие: Дан массив из 20 элементов, найти 5 соседних элементов, сумма которых максимальна.
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
Private Sub Form_Load()
Dim A(20) As Integer, i As Integer, S As Integer, d As Integer, f As Integer, k As Integer, S1 As Integer, S2 As Integer, S3 As Integer, max As Integer
Randomize Timer
For i = 1 To 20
A(i) = Int(Rnd * 100)
Print A(i)
Next i
Print
S = 0
For i = 1 To 5
S = A(i) + S
Next i
For k = 6 To 11
For i = 1 To 5
S1 = S + A(k) - A(i)
Next k
Next i
For f = 11 To 15
For k = 6 To 11
S2 = S1 + A(f) - A(k)
Next f
Next k
For d = 16 To 20
For f = 11 To 15
S3 = S2 + A(d) - A(f)
Next d
Next f
max = S
If S1 > S Then max = S1
If S2 > S1 Then max = S2
If S3 > S2 Then max = S3
End Sub
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.03.2013, 20:33
Ответы с готовыми решениями:

Найти в массиве две строки, сумма элементов которых максимальна и минимальна
Доброго времени суток. Ребята помогите мне пожалуйста!!! 1.Нужно найти в массиве две строки, сумма элементов которых максимальна и...

В одномерном массиве найти номер последней пары соседних элементов, сумма которых больше заданного числа
как найти в одномерном массиве номер последней пары соседних элементов, сумма которых больше заданного числа? Добавлено через 22...

Определить сумму элементов каждой строки массива 5х5 и вывести на экран ту строку, в которой сумма элементов максимальна
Всем привет!) У меня завтра экзамен в 10 утра, а в бейсике я не очень сильна :( Если кто-то может помочь с написанием программы и будет...

6
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38166 / 21101 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
26.03.2013, 20:42
Чего-то многовато кода... Мне кажется, можно короче:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Task(A() as integer)
      n%=Ubound(A,1)
      max_s%=0
      max_p%=1
      for i%=1 to 5
          max_s%=max_s%+A(i%)
      next i%  
      For ii%=2 to n%-4
           s%=0
           For i%=ii% to ii%+4
                s%=s%+A(i%)
           Next i%
           If s% > max_s% then
              max_s%=s%
              max_p%=ii%
           End if
      Next ii%
      Debug.print "Макс. сумма элементов достигается для эл-та ";max_p%
      Debug.print "и равна ";max_s%
End Sub
2
 Аватар для Апострофф
9908 / 3923 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
26.03.2013, 21:00
Лучший ответ Сообщение было отмечено как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Form_Load()
Dim A(1 To 20) As Integer, i As Integer, S As Integer, max As Integer
Randomize
For i = 1 To 20
  A(i) = Int(Rnd * 100)
  Print A(i)
Next i
Print
For i = 1 To 20
  S = A(i) + S
  If i > 5 Then
    S = S - A(i - 5)
    If S > max Then
      max = S
    End If
  End If
Next i
End Sub
3
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
26.03.2013, 21:01
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Catstail Посмотреть сообщение
Чего-то многовато кода
Совершенно согласен! Но там заложена правильная идея: для получения следующей суммы из предыдущей достаточно вычесть один и добавить один элемент массива
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Form_Load()
Dim A(20) As Integer, i As Integer, S As Integer, Smax As Integer, Imax As Integer
Show
Randomize Timer
For i = 1 To 20
    A(i) = Int(Rnd * 100)
    Print A(i)
Next i
Print
For i = 1 To 5
    S = A(i) + S
Next i
Smax = S
Imax = 1
For i = 1 To 15
    S = S + A(i + 5) - A(i)
    If S > Smax Then Smax = S: Imax = i + 1
Next i
 
Print Smax, Imax
End Sub
3
 Аватар для Апострофф
9908 / 3923 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
27.03.2013, 07:21
Фрагмент с 11 по 16 строку данного кода нужно исправить
Visual Basic
1
2
3
4
5
6
7
8
  if i=5 then
    max = S
  elseIf i > 5 Then
    S = S - A(i - 5)
    If S > max Then
      max = S
    End If
  End If
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
27.03.2013, 09:18
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
Private Sub Command1_Click()
Dim A(1 To 20) As Double, i As Integer, SumMax As Double, iMax As Integer
    Randomize Timer
    Cls
    For i = 1 To 20
        A(i) = Int(Rnd * 100)
        Print A(i);
    Next i
    Print
    SumMax = SumN(A, 1):  iMax = 1
    For i = 1 To 16
        If SumMax < SumN(A, i) Then SumMax = SumN(A, i): iMax = i
        Print "Cумма элементов с " & i & "-го по " & i + 4 & "-й равна " & SumN(A, i)
    Next i
    Print "Максимальая сумма элементов с " & iMax & "-го по " & iMax + 4 & "-й равна " & SumMax
End Sub
 
Function SumN(ByRef A() As Double, ByVal i As Integer, Optional ByVal n As Integer = 5) As Double
    Dim j As Integer 
    For j = i To i + n - 1
        SumN = SumN + A(j)
    Next j
End Function
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38166 / 21101 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
27.03.2013, 18:33
Да, "отнять первый прибавить следующий" дает существенный выигрыш производительности. Но программа теряет наглядность (в смысле - чтобы понять, что делает код, нужно напрячься). Понять код с лишними циклами проще.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2013, 18:33
Помогаю со студенческими работами здесь

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

Найти наибольшую сумму соседних элементов в массиве: Z={0.21; -1.6; 3.15; 21.9; 4.18; 12.9; -2.3; 7.2; 4.5; 6.8; 9.21; 1.7;7.9;-2.4)
Нужна блок-схема. Буду признательна.

Найти наибольшую сумму соседних элементов в массиве
Найти наибольшую сумму соседних элементов в массиве: Z={0.21; -1.6; 3.15; 21.9; 4.18; 12.9; -2.3; 7.2; 4.5; 6.8; 9.21; 1.7;7.9;-2.4) ...

В массиве из 20 элементов найти 5 соседних элементов сумма которых максимальна
В массиве из 20 элементов, найти 5 соседних элементов, сумма которых максимальна. Заранее Спасибо.

Дан одномерный массив, найти 5 соседних элементов, сумма которых максимальна
дан одномерный массив, найти 5 соседних элементов сумма которых максимальна


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru