Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / обратимый цикл / 8 сообщений из 8, страница 1 из 1
22.01.2014, 18:43
    #38534775
fastomg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обратимый цикл
Задан массив x1, x2, …, x15.
Определить номер первого отрицательного xi и номер последнего
отрицательного xi.

вообщем, программу написал, но с двумя циклами, работает, но надо сделать один цикл, чтобы сначала считал от 1 до 15 шагом 1, потом менялся от 15 до 1 шагом -1. делема....

Код: vbnet
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.
Sub macros6()
Dim x(15) As Single
Dim first, last, n, i As Integer

For i = 1 To 15
x(i) = Cells(i, 1)
Next i

Call otbor(x)

End Sub

Function otbor(g() As Single) As Single
    For i = 1 To 15
        If g(i) < 0 Then
        last = i
        Cells(1, 3) = last
        End If
    Next i
    For i = 15 To 1 Step -1
        If g(i) < 0 Then
        first = i
        Cells(1, 2) = first
        End If
    Next i
End Function


Модератор: Учимся использовать тэги оформления кода - FAQ

помогите, чем сможете....
...
Рейтинг: 0 / 0
22.01.2014, 18:46
    #38534779
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обратимый цикл
Зачем? сразу заведи две переменные, закинь в них -1. Потом ищи отрицательные, в первую переменную клади номер только первого найденного, во вторую - каждого, к концу работы там будет номер последнего. Вот и всё.
...
Рейтинг: 0 / 0
22.01.2014, 18:50
    #38534788
fastomg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обратимый цикл
Akina,

а можешь показать как это будет выглядеть в vba, просто я на словах не понимаю(
...
Рейтинг: 0 / 0
22.01.2014, 19:10
    #38534818
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обратимый цикл
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
first=-1
last=-1
    For i = 1 To 15
        If g(i) < 0 Then
            last = i
            if first=-1 then
                first = i
                Cells(1, 2) = first
            end if
            Cells(1, 3) = last
        End If
    Next i
...
Рейтинг: 0 / 0
22.01.2014, 19:41
    #38534848
fastomg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обратимый цикл
Akina,

а почему в переменные закидываем -1 ?
...
Рейтинг: 0 / 0
22.01.2014, 20:27
    #38534887
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обратимый цикл
Да можно вообще без цикла :)
Код: vbnet
1.
2.
3.
4.
5.
Sub macros7()
[b1].FormulaArray = "=INDEX(ROW(A1:A15),MATCH(TRUE,A1:A15<0,))"
[c1].Formula = "=LOOKUP(2,1/(1-(A1:A15>=0)),ROW(A1:A15))"
[b1:c1].Value = [b1:c1].Value
End Sub
...
Рейтинг: 0 / 0
22.01.2014, 22:10
    #38534958
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обратимый цикл
fastomgпочему в переменные закидываем -1 ?
Чтобы иметь возможность определить, что все числа массива положительны.
...
Рейтинг: 0 / 0
23.01.2014, 22:55
    #38536145
Volodbka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обратимый цикл
For i = x To y Step Z
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / обратимый цикл / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]