Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Помогитите пожалуйста с одномерными массивами решить задачу

Ответить
Настройки темы
VBA - Помогитите пожалуйста с одномерными массивами решить задачу

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить 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

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


vivat, а в чем собственно проблема?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 18:19, 14-12-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


мах как найти?я не знаю и минимум тоже...

Отправлено: 21:28, 14-12-2010 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


vivat, хм... дела. Может сравнение елементов попробовать?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 22:04, 14-12-2010 | #4


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 19:06, 15-12-2010 | #5


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить 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


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить 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 под руками нет проверить.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:56, 16-12-2010 | #7


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


мне тоже кажется,что не верно A(i) = InputBox("A(i)"),но а как тогда?

Отправлено: 11:54, 16-12-2010 | #8


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


vivat, возьми какую либо книжку почитать. Там расскажут и покажут все первые шаги программирования.
Я же могу тебя только отослать к чтению документации. Запрос к гугл Ведет к первоисточнику.
Т.к. возвращается строка, а необходимо получить число, соотв надо найти функцию перевода строки в число.
Это тебе для самостоятельного поиска. (а мне надо идти)

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 16:43, 16-12-2010 | #9


Пользователь


Сообщения: 120
Благодарности: 22

Профиль | Цитировать


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
Результат одного из запусков рядышком
читать дальше »

Элемент: A0 = 9
Элемент: A1 = 30
Элемент: A2 = -14
Элемент: A3 = 27
Элемент: A4 = -78
Элемент: A5 = -23
Элемент: A6 = -97
Элемент: A7 = -39
Элемент: A8 = -37
Элемент: A9 = 29
Элемент: A10 = -34
Элемент: A11 = -90
Элемент: A12 = -25
Элемент: A13 = -2
Элемент: A14 = -94
Элемент: A15 = 92
Элемент: A16 = -52
Элемент: A17 = 25
Элемент: A18 = 39
Элемент: A19 = -15
Элемент: A20 = 47
Элемент: A21 = 67
Элемент: A22 = -77
Элемент: A23 = -37
Элемент: A24 = 11
Элемент: A25 = 27
Элемент: A26 = -14
Элемент: A27 = 94
Элемент: A28 = 63
Элемент: A29 = -90
Элемент: A30 = -98
Элемент: A31 = -28
Элемент: A32 = -95
Элемент: A33 = -71
Элемент: A34 = -73
Элемент: A35 = 42
Элемент: A36 = 17
Элемент: A37 = 69
Элемент: A38 = 30
Элемент: A39 = 44
Элемент: A40 = -11
Элемент: A41 = -15
Элемент: A42 = 55
Элемент: A43 = 0
Элемент: A44 = 79
Элемент: A45 = 25
Элемент: A46 = -76
Элемент: A47 = -87
Элемент: A48 = 91
Элемент: A49 = -46
Элемент: A50 = 21
Максимальный элемент массива: 94
Минимальная сумма соседних элементов массива: -188
Количество четных элементов в массиве: 20

Отправлено: 10:36, 29-12-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Помогитите пожалуйста с одномерными массивами решить задачу

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход