Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ЦИКЛЫ

14K
11 января 2006 года
Inferno_2006
4 / / 11.01.2006
как можно запустить два цикла одновременно или допустим на каждый шаг вложенных циклов счетчик наматывал единицу??????

(среда Delphi 7)
5
11 января 2006 года
hardcase
4.5K / / 09.08.2005
Цитата:
Originally posted by Inferno_2006
как можно запустить два цикла одновременно или допустим на каждый шаг вложенных циклов счетчик наматывал единицу??????

(среда Delphi 7)


Сам-то понял, что спросил?

Что ты имеешь в виду под термином "одновременно"? Параллельно?

И, простите, какой счётчик, внешнего цикла или внутреннего?

Напиши плз. понятнее, что требуется

14K
11 января 2006 года
Farnsworth
9 / / 17.12.2005
Цитата:
Originally posted by Inferno_2006
как можно запустить два цикла одновременно или допустим на каждый шаг вложенных циклов счетчик наматывал единицу??????



 
Код:
j:=10;
for i:=0 to 100 do begin
    // в этом месте у тебя переменные i и j приращиваются на единицу одновременно.
    // i - от 0 до 100, а j - от 10 до 110.
    inc(j);
end;
14K
11 января 2006 года
Inferno_2006
4 / / 11.01.2006
Да я имел в виду паралельно то есть

допустим

for j := 1 to 2 do
for i := 1 to 2 do
for p := 1 to 2 do
.......
begin
здесь мой код а до него мне нужно добавлять единицук к переменной или цикл на один добавлять;
end;

т.е.



for j := 1 to 2 do
for i := 1 to 2 do
for p := 1 to 2 do
begin
l := l + 1;
mas3[l,p] := mas1[i,j] * mas2[j,p];
мне нужно что бы l := l + 1 прогоняло один раз и шло на p := 1 to 2

end;
и на каждый шаг мне надо добавлять единицу в другой цикл или как нибудь



если опять криво написал извини и пойми пожалуфста
5
11 января 2006 года
hardcase
4.5K / / 09.08.2005
Используй не for циклы, а while.
и тогда inc(inerator) прокатит.
14K
12 января 2006 года
Farnsworth
9 / / 17.12.2005
Цитата:
Originally posted by Inferno_2006
Да я имел в виду паралельно то есть



Действительно, очень непонятно объяснил. Ты лучше напиши, какие значения каких переменных на каждом шаге цикла тебе нужны. Глядишь, кстати, и сам решение увидишь. То есть:

i: 0 1 2 0 1 ...
j: 0 0 0 1 1 ...
k: 0 0 0 0 0 ...
l: 0 1 2 3 4 ... и т.д.

Так будет наглядней.

14K
16 января 2006 года
Inferno_2006
4 / / 11.01.2006
1 for j := 1 to 2 do

2 for i := 1 to 2 do

3 for p := 1 to 2 do

4 begin

5 l := l + 1;
6 mas3[l,p] := mas1[i,j] * mas2[j,p];

7 end;



почему компилятор следует так (это точно я ставил флаги и смотрел на переменные после прохождения флага (точки))

при первом проходе j := 1; I := 1; p := 1;

L := 1;

mas3[L,p] := mas1[I,j] * mas2[j,p];

а потом снова-----------------

L:=1

mas3[l,p] := mas1[I,j] * mas2[j,p];


т.е. он проходит 5,6 строку два раза
с накручиванием на один 5 ой строки

почему он снова не идет на 3 строку
а идет на 5 ую
14K
16 января 2006 года
Farnsworth
9 / / 17.12.2005
Цитата:
Originally posted by Inferno_2006

L := 1;

mas3[L,p] := mas1[I,j] * mas2[j,p];

а потом снова-----------------

L:=1



Ну, тогда уж, раз "снова", то L=2;
Конечно-же он эту строку пройдет два раза. Ведь внутренний цикл у тебя задан на два прохода (p=1 и p=2). Компилятор не пойдет на 3-ю строчку, пока цикл по "p" не закончится. А на 2-ю строчку он не пойдет до тех пор, пока цикл по "i" не закончится (а в нём цикл по "p").

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог