|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Помогитите пожалуйста с одномерными массивами решить задачу |
|
VBA - Помогитите пожалуйста с одномерными массивами решить задачу
|
Новый участник Сообщения: 7 |
Профиль | Отправить PM | Цитировать помогите решить хотя бы под одной буквой
Даны целые числа a1, a2, … Известно, что a1 > 0 и что среди a2,a3,… есть хотя бы одно отрицательное число. Пусть a1,…,an – члены данной последовательности, предшествующие первому отрицательному члену (n заранее неизвестно). Получить: a) max (а1, …, аn );б) min (a1+a2, a2+a3, …,an-1+an); в) количество четных среди а1, …, аn; |
|
Отправлено: 18:05, 14-12-2010 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать vivat, а в чем собственно проблема?
|
------- Отправлено: 18:19, 14-12-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать мах как найти?я не знаю и минимум тоже...
|
Отправлено: 21:28, 14-12-2010 | #3 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать vivat, хм... дела. Может сравнение елементов попробовать?
|
------- Отправлено: 22:04, 14-12-2010 | #4 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать мне хотя бы знать,как вычисления делать,по какой формуле вычислять прогрессию.....
|
|
Отправлено: 19:06, 15-12-2010 | #5 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать я пыталась сделать под а)нахождение максимального значения вот что вышло
Sub mac1() Dim A() As Integer, n As Byte, i As Integer, r As Integer, b As Integer n = InputBox("n") ReDim A(n) For i = 1 To n A(i) = InputBox("A(i)") Next i Amax = A(1) : k = 1 For i = 2 To n If A(i) > max Then max = A(i) : k = i Next i MsgBox "max=" & r End Sub у меня ошибка есть,но я не знаю где.... |
Отправлено: 08:25, 16-12-2010 | #6 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать vivat, вроде все верно.
1. Покажи объявление переменных max, k. 2. Сделай проверку на единичную длину массива. 3. If A(i) > max Then max = A(i) : k = i напиши в две строки. If A(i) > max Then max = A(i) k = i - ЕМНИП это не будет принадлежать условию if. If A(i) > max Then max = A(i) k = i else EndIf А вот так будет. В любом случае проверь синтаксис конструкции IF Then Else. 4. MsgBox "max=" & r Максимальное значение у тебя храниться в max, индекс максимального в k. Скажи, причем здесь r ? Это как в анекдоте: Летят два крокодила, один зеленый, другой на север. Вопрос: сколько лет было тигру, когда посадили медведя. Ответ: а зачем мне холодильник, если я не курю. Вот так и у тебя. Считается в одних переменных, а на вывод ты запрашиваешь другие. 5. A(i) = InputBox("A(i)") - эта конструкция точно верна? у меня VBA под руками нет проверить. |
------- Отправлено: 08:56, 16-12-2010 | #7 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать мне тоже кажется,что не верно A(i) = InputBox("A(i)"),но а как тогда?
|
Отправлено: 11:54, 16-12-2010 | #8 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать vivat, возьми какую либо книжку почитать. Там расскажут и покажут все первые шаги программирования.
Я же могу тебя только отослать к чтению документации. Запрос к гугл Ведет к первоисточнику. Т.к. возвращается строка, а необходимо получить число, соотв надо найти функцию перевода строки в число. Это тебе для самостоятельного поиска. (а мне надо идти) |
------- Отправлено: 16:43, 16-12-2010 | #9 |
Пользователь Сообщения: 120
|
vivat, наслаждайтесь
Function GetCountEvenItems(ByRef An() As Double) As Long Dim evenCount As Long Dim i As Long evenCount = 0 For i = 0 To UBound(An) If (An(i) / 2 - An(i) \ 2) = 0 Then evenCount = evenCount + 1 End If Next i GetCountEvenItems = evenCount End Function Function MinimumOfSumNearlessItems(ByRef An() As Double) As Double Dim minSumNearlessItems As Double Dim i As Long minSumNearlessItems = (An(0) + An(1)) For i = 1 To UBound(An) If (An(i - 1) + An(i)) < minSumNearlessItems Then minSumNearlessItems = (An(i - 1) + An(i)) End If Next i MinimumOfSumNearlessItems = minSumNearlessItems End Function Function Maximum(ByRef An() As Double) As Double Dim maxItem As Double Dim i As Long maxItem = An(0) For i = 0 To UBound(An) If An(i) > maxItem Then maxItem = An(i) End If Next i Maximum = maxItem End Function Sub TestStart() Dim tmp() As Double Dim n As Long Dim i As Long 'Общая инициализация массива An Randomize n = Val(Rnd() * 100 & "") ReDim tmp(n) For i = 0 To n tmp(i) = Val((Rnd() * 100)) * IIf((Rnd() * 100) > 50, 1, -1) Next i 'Массив в окно Immediate (для проверки правильности) For i = 0 To n Debug.Print "Элемент: A" & i & " = " & tmp(i) Next i 'Вариант_А 'Результат в окно Immediate (вызывается по нажатию Ctrl+G) Debug.Print "Максимальный элемент массива: " & Maximum(tmp()) 'Вариант_Б 'Результат в окно Immediate (вызывается по нажатию Ctrl+G) Debug.Print "Минимальная сумма соседних элементов массива: " & MinimumOfSumNearlessItems(tmp()) 'Вариант_В 'Результат в окно Immediate (вызывается по нажатию Ctrl+G) Debug.Print "Количество четных элементов в массиве: " & GetCountEvenItems(tmp()) End Sub |
Отправлено: 10:36, 29-12-2010 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Помогите решить задачу | Urann | Программирование и базы данных | 11 | 14-05-2013 11:44 | |
C/C++ - [решено] Помогите решить задачу по С++ | Spl1t | Программирование и базы данных | 301 | 21-12-2011 23:20 | |
C/C++ - Помогите решить задачу | zdughi | Программирование и базы данных | 1 | 01-05-2009 06:03 | |
помогите решить задачу | snikers | Программирование и базы данных | 2 | 27-08-2004 01:57 | |
помогите решить задачу | Guest | Программирование и базы данных | 2 | 21-05-2004 11:23 |
|