Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.06;
Скачать: CL | DM;

Вниз

как реализовать цикл   Найти похожие ветки 

 
прохожий   (2002-12-24 11:33) [0]

Как сделать так, чтобы цикл шел так:

-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;

спасибо!


 
Smithson ©   (2002-12-24 11:39) [1]


var I, J: Integer;

for I := 1 to n do begin
J := I;
// тело цикла первый раз (или вызов процедуры)
J := -I;
// тело цикла второй раз (или вызов процедуры)
end;


А зачем?


 
прохожий   (2002-12-24 11:51) [2]

чтобы отследить номера элементов, содержащих единицу в массиве, ссответственно эти элементы могут идти не подряд лесенкой, а через элемент... массив массивов например такой

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 и идут они как хочешь...

т.е. такая вот хреновая проблема...


 
myor ©   (2002-12-24 13:02) [3]

а по математике не встречал такую конструкцию:

(-1)^k?

for i:=1 to n do
for j:=1 downto 0 do
x:=i*(-1)^j



 
прохожий   (2002-12-24 14:06) [4]

угу, спасибо myor, конструкцию встречал, но лыжы не едут вообще... :( когда оно надо.



Страницы: 1 вся ветка

Текущий архив: 2003.01.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
14-15230
Jeer
2002-12-15 22:05
2003.01.06
???


1-15134
DenK_vrtz
2002-12-23 13:17
2003.01.06
Сменить системную дату в NT


6-15195
SemFLY
2002-11-07 22:15
2003.01.06
Как в компоненте INDY - TidMessage, прицепить файл к письму ?


14-15313
J_S
2002-12-18 14:32
2003.01.06
SQL & dbExpress


14-15289
zavdim
2002-12-17 10:57
2003.01.06
Форматирование текста программ