powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / обратимый цикл
8 сообщений из 8, страница 1 из 1
обратимый цикл
    #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
обратимый цикл
    #38534779
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем? сразу заведи две переменные, закинь в них -1. Потом ищи отрицательные, в первую переменную клади номер только первого найденного, во вторую - каждого, к концу работы там будет номер последнего. Вот и всё.
...
Рейтинг: 0 / 0
обратимый цикл
    #38534788
fastomg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

а можешь показать как это будет выглядеть в vba, просто я на словах не понимаю(
...
Рейтинг: 0 / 0
обратимый цикл
    #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
обратимый цикл
    #38534848
fastomg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

а почему в переменные закидываем -1 ?
...
Рейтинг: 0 / 0
обратимый цикл
    #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
обратимый цикл
    #38534958
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fastomgпочему в переменные закидываем -1 ?
Чтобы иметь возможность определить, что все числа массива положительны.
...
Рейтинг: 0 / 0
обратимый цикл
    #38536145
Volodbka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For i = x To y Step Z
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / обратимый цикл
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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