ЦИКЛЫ
(среда Delphi 7)
как можно запустить два цикла одновременно или допустим на каждый шаг вложенных циклов счетчик наматывал единицу??????
(среда Delphi 7)
Сам-то понял, что спросил?
Что ты имеешь в виду под термином "одновременно"? Параллельно?
И, простите, какой счётчик, внешнего цикла или внутреннего?
Напиши плз. понятнее, что требуется
как можно запустить два цикла одновременно или допустим на каждый шаг вложенных циклов счетчик наматывал единицу??????
for i:=0 to 100 do begin
// в этом месте у тебя переменные i и j приращиваются на единицу одновременно.
// i - от 0 до 100, а j - от 10 до 110.
inc(j);
end;
допустим
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;
и на каждый шаг мне надо добавлять единицу в другой цикл или как нибудь
если опять криво написал извини и пойми пожалуфста
и тогда inc(inerator) прокатит.
Да я имел в виду паралельно то есть
Действительно, очень непонятно объяснил. Ты лучше напиши, какие значения каких переменных на каждом шаге цикла тебе нужны. Глядишь, кстати, и сам решение увидишь. То есть:
i: 0 1 2 0 1 ...
j: 0 0 0 1 1 ...
k: 0 0 0 0 0 ...
l: 0 1 2 3 4 ... и т.д.
Так будет наглядней.
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 ую
L := 1;
mas3[L,p] := mas1[I,j] * mas2[j,p];
а потом снова-----------------
L:=1
Ну, тогда уж, раз "снова", то L=2;
Конечно-же он эту строку пройдет два раза. Ведь внутренний цикл у тебя задан на два прохода (p=1 и p=2). Компилятор не пойдет на 3-ю строчку, пока цикл по "p" не закончится. А на 2-ю строчку он не пойдет до тех пор, пока цикл по "i" не закончится (а в нём цикл по "p").