Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
прохожий   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
1-15107
Igorek
2002-12-18 14:07
2003.01.06
Класс


14-15246
AL2002
2002-12-16 12:28
2003.01.06
Что такое MySQL?


4-15363
lds
2002-11-19 14:15
2003.01.06
Как вызвать диалог выбора файлов?


3-14895
freeman
2002-12-12 16:23
2003.01.06
interbase 5.1


4-15346
Lexa1900
2002-11-17 21:21
2003.01.06
Как отловить нажатие кнопки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский