![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как реализовать цикл [D6]
прохожий © (2002-12-24 11:33:00)Как сделать так, чтобы цикл шел так:
-1
1
-2
2
-3
3
-4
4 и т.д.
т.е. есть точка, если она равна нулю, то двигаемся сначала на шаг влево, затем на шаг вправо. Если не равна нулю то становимся в эту точку.
вот это не работает:
while massiv[e+h] <> 0 do begin
if massiv[e+h] <> 0 then h:=h-1;
if massiv[e-h] <> 0 then h:=h+1;
end;
спасибо!
прохожий (2002-12-24 14:06:00) [1]угу, спасибо myor, конструкцию встречал, но лыжы не едут вообще... :( когда оно надо.
myor (2002-12-24 13:02:00) [2]а по математике не встречал такую конструкцию:
(-1)^k?
for i:=1 to n do
for j:=1 downto 0 do
x:=i*(-1)^j
прохожий (2002-12-24 11:51:00) [3]чтобы отследить номера элементов, содержащих единицу в массиве, ссответственно эти элементы могут идти не подряд лесенкой, а через элемент... массив массивов например такой
1: 000001
2: 000010
3: 001000
4: 010000
5: 100000
нужно сделать так, чтобы можно было бы бегать по этой диагонали из единичек интервалом такой длины, чтобы справа и слева от единички было по одному нолику. Проблема в том, чтобы когда я в первой строчке нахожусь то 4-й элемент массива единица, а когда я в цикле перехожу на следующую строчку, то там уже третий элемент единица...
Соответственно если написать такой код, то оно будет рисовать только три эллипса-точки(а хотелось бы чтобы все пять):
for i:=0 to 10 do begin
for r:=e-1 to e+1 do begin
if (massiv[i,r]=1) then begin
Ellipse(r,i,r+2,i+2);
end;
if (massiv[i,r]=0) then begin
for I := 1 to n do begin
J := I;
if j<0 then h:=h+1;
// тело цикла первый раз (или вызов процедуры)
J := -I;
if j>0 then h:=h-1;
// тело цикла второй раз (или вызов процедуры)
end;
end;
end;
end;
на самом деле вся проблема в том, что единичек, расположенных по диагонали вовсе не 5, а 300-350 и идут они как хочешь...
т.е. такая вот хреновая проблема...
Smithson (2002-12-24 11:39:00) [4]
var I, J: Integer;
for I := 1 to n do begin
J := I;
// тело цикла первый раз (или вызов процедуры)
J := -I;
// тело цикла второй раз (или вызов процедуры)
end;
А зачем?