powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / проходка цикла циклов
7 сообщений из 7, страница 1 из 1
проходка цикла циклов
    #32204179
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задачка следующая :
Есть матрица (Nx4):
Код: plaintext
1.
2.
3.
4.
5.
 1 -й столбец ;  2 -й столбец ;  3 -й столбец;  4 -й столбец
x                ;  хНач           ; xКон          ; xТекущее 
y                ;  yНач           ; yКон          ; уТекущее 
z                ;  zНач           ; zКон          ; zТекущее 
...              ;  ...Нач          ; ...Кон        ; ...Текущее 

Ее N строчек задают N циклов с их параметрами(Например, в 1-м цикле некая переменная x должна изменяться от xНач до xКон Значений с шагом 1 и текущее ее значение = xТекущее). Первый столбец приведен для определенности параметра цикла.
Нужно пройти все эти циклы, считая что каждый верхний (по строке матрицы) охватывает нижний и ,например , распечатать 4-й столбец, содержащий текущее значение параметра цикла при проходке.

Т.е. на первом шаге :
xТекущее=xНач,yТекущее=yНач,...последняяТекущее=последняяНачальное
на втором шаге :
xТекущее=xНач,yТекущее=yНач,...последняяТекущее=последняяВтороеЕеЗначение

Когда все значения последней переменной(самого внутреннего цикла) переберутся, перейти ко второму значению предпоследней переменой(предпоследнего цикла) при всех выше установленных переменных и опять перебрать все значения самого последнего цикла. И так перебрать всю предпоследнюю переменную.
Покончив с ней перейти к перебору таким же образом цикла на уровень выше и так далее вплоть до самого верхнего.
Ну и при каждой установке всех значений 4-го столбца матрицы - распечатывать его.

Короче надо с учетом вложенности пройти все эти циклы, а параметры их , как я уже сказал, заданы в матрице, Которая,понятно , не имеет наперед известное количество строк(циклов)

Как-то я не въезжаю. И еще - хотелось бы сделать это без рекурсивных процедур, так как с помощью этой структуры нужно обрабатывать уже существующую программулину.Но уж как получится!
...
Рейтинг: 0 / 0
проходка цикла циклов
    #32204313
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Код: plaintext
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.
33.
34.
35.
36.
37.
38.
39.
Sub z()

Dim nCycles As Integer, nCurCycle As Integer, tmp As Integer
Dim Param() As Integer
Dim Start() As Integer
Dim Fin() As Integer

'Вместо этого куска будет загрузка из базы'
nCycles =  3 
ReDim Param( 1  To nCycles)
ReDim Start( 1  To nCycles)
ReDim Fin( 1  To nCycles)
For tmp =  1  To nCycles
    Start(tmp) =  1 
    Fin(tmp) =  4 
Next

nCurCycle =  0 
Do
    For tmp =  1  To nCycles
        If tmp > nCurCycle Then Param(tmp) = Start(tmp)
    Next
    
    'Вместо этого куска будет исполнение тела цикла'
    For tmp =  1  To nCycles
        Debug.Print Param(tmp),
    Next
    Debug.Print
    
    For tmp = nCycles To  1  Step - 1 
        Param(tmp) = Param(tmp) +  1 
        If Param(tmp) <= Fin(tmp) Then
            nCurCycle = tmp
            Exit For
        End If
        If tmp =  1  Then Exit Do
    Next
Loop

End Sub
...
Рейтинг: 0 / 0
проходка цикла циклов
    #32204950
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Кстати (если еще нужно): там, где +1, можно сделать шаг цикла тоже для каждого цикла свой.
...
Рейтинг: 0 / 0
проходка цикла циклов
    #32205057
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Владимир Саныч :
Cпасибо, что еще сказать ...
Хотя сказать безусловно есть чего :
Ну ,например, воскликнуть:"Ну почему я такой умный! Что не могу решить собой же поставленные задачки , причем знаю, что они решаются?"

Я до обеда вчера почти сидел над этим - все циклы строил. Нет - этого мне показалось мало, - после получения твоего ответа , я не поверил , что так все просто и сегодня вечером еще парочку часов потратил на поиски ошибки в твоем ответе - нашел, потом опять потерял, потом что-то заставило попробовать этот алгоритм. Мать честна! Все работало!

И это у меня не впервой, старею наверное, а может устал, а может не спал (сегодня ночью было большое счастье - жена меня хотела), а может я болен головой иль нервами...

Что! что надо делать чтоб работать и жить легко и красиво, скажи Саныч, не таи! Или бесталанный я такой и безнадежный?..
...
Рейтинг: 0 / 0
проходка цикла циклов
    #32205724
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Разрази меня гром, я опять начинаю трепаться не по теме. Пусть меня на том свете простят.

Все в порядке, все хорошо, не надо нервничать. У тебя есть жена, а у меня нет (и я не считаю, что это хорошо). Наверно, поэтому я смог сосредоточиться. Когда меня учили программировать, то учили рисовать цикл без Do и без For. Сначала делаешь i=1, потом i+1, потом где-нибудь проверка и GoTo на начало. Если несколько таких команд написать одну в другой, то оказывается, что вышло несколько подряд i=1, несколько подряд i+1 и т.д. А значит, их можно оформить в виде цикла, и тем самым снимается ограничение на количество этих самых i.

Надо сказать правду: когда я написал эту программу, то в ней были баги. Но потом я ее запустил и отладил - совершенно как положено. После этого запостил в форум. На все вместе ушел час, за который я успел сделать еще несколько дел по работе.

Все нормально, все хорошо. Главное - не терять тонус. :^)
...
Рейтинг: 0 / 0
проходка цикла циклов
    #32205741
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главное - не терять тонус.
Канешна главное. Без тонус тебя жена нэ захочет.
...
Рейтинг: 0 / 0
проходка цикла циклов
    #32480069
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Версия с разным шагом у каждого цикла:

Код: plaintext
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.
33.
34.
35.
36.
37.
Sub z()

Dim nCycles As Integer, nCurCycle As Integer, tmp As Integer
Dim Param() As Integer, Start() As Integer, Fin() As Integer, By() As Integer

'Вместо этого куска будет загрузка из базы'
nCycles =  3 
ReDim Param( 1  To nCycles), Start( 1  To nCycles), Fin( 1  To nCycles), By( 1  To nCycles)
For tmp =  1  To nCycles
    Start(tmp) =  1 
    Fin(tmp) =  4 
    By(tmp) =  1 
Next

nCurCycle =  0 
Do
    For tmp =  1  To nCycles
        If tmp > nCurCycle Then Param(tmp) = Start(tmp)
    Next
    
    'Вместо этого куска будет исполнение тела цикла'
    For tmp =  1  To nCycles
        Debug.Print Param(tmp),
    Next
    Debug.Print
    
    For tmp = nCycles To  1  Step - 1 
        Param(tmp) = Param(tmp) + By(tmp)
        If Param(tmp) <= Fin(tmp) Then
            nCurCycle = tmp
            Exit For
        End If
        If tmp =  1  Then Exit Do
    Next
Loop

End Sub
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / проходка цикла циклов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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