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

Вниз

Проблема с For i:=... to ....   Найти похожие ветки 

 
denmin ©   (2003-11-04 15:02) [0]

Можно ли в For задать шаг.


 
Anatoly Podgoretsky ©   (2003-11-04 15:03) [1]

Нет


 
Song ©   (2003-11-04 15:04) [2]

For i:=0 to .. Do
IF Odd(i) then ..


 
ZEE ©   (2003-11-04 15:19) [3]

как вариант:
for i:=Low(MyArray) to High(MyArray) do
begin
j:=i*2;
MyArray[j]:=...; //каждый второй
end;


 
Sodom ©   (2003-11-04 15:21) [4]

Можно так:
// надо
for i:=10 to 100 step 10
// делай так
for i:=1 to 10 do begin
k:=i*10;
// работаем с k
end;


 
Song ©   (2003-11-04 15:25) [5]

2Sodom © (04.11.03 15:21) [4]
Молодец! :)


 
denmin ©   (2003-11-04 15:25) [6]

но мне надо арифметическую прогрессию, но не
// делай так
for i:=1 to 10 do begin
k:=i*10;
а пробовал
for i:=1 to 10 do begin
k:=i+10;
не работает


 
Anatoly Podgoretsky ©   (2003-11-04 15:29) [7]

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


 
denmin ©   (2003-11-04 15:58) [8]

-> Зачем извращения, для этого существует цикл while, которые позволяет изменять порядок прохода и использовать не только перечислимые типы.

Спасибо.


 
Skier ©   (2003-11-04 15:58) [9]

>denmin © (04.11.03 15:02)

> Можно ли в For задать шаг.

Есть хорошая веСЧь Continue называется. Иногда помогает.
А вообще-то смотри [7]


 
Regis ©   (2003-11-04 23:43) [10]

Вообще

for i := 1 to 10 do
k := i * 10;

это и есть арифметическая прогрессия ...


 
Mihey ©   (2003-11-05 00:26) [11]

Имхо нужно выработать общий алгоритм:

Step := 10;
N := 100;
For i := 1 to (N div Step) do
begin
i := i * Step;
end;


 
Slavian ©   (2003-11-05 00:41) [12]

а вы while использовать не пробовали?
i:=0
while i<= 100 do begin
i:=i+5
//....
end;
и всё. не обязательно всё через for делать!


 
default ©   (2003-11-05 01:54) [13]

а зачем для арифметической прогрессии какие-то циклы?
вроде формулы есть...


 
Спрашивающий_   (2003-11-05 04:22) [14]

Repeat
Что то делаем
Inc(I,шаг) или Dec(I,шаг);

Until до чего то


 
default ©   (2003-11-05 04:23) [15]

Slavian © (05.11.03 00:41) [12]
прочитай сабж


 
Думкин ©   (2003-11-05 05:30) [16]

Ровное повторение вчерашнего цирка.
Ответ дан первым же постом - но ... Колумбам несть числа.


 
Beginner3000   (2003-11-05 05:41) [17]

можно и так:
for i := 1 to 10 do
begin
i := i + 9;
...
end;
но имхо по сравнению с [4] это - извращение


 
KSergey ©   (2003-11-05 08:07) [18]

> [17] Beginner3000 (05.11.03 05:41)
> можно и так:
> for i := 1 to 10 do
> begin
> i := i + 9;
> ...
> end;

Не надо обманывать народ!

Цитата и Тейксерры, Пачеко "D5...":
" Внимание!: ...начиная с D2 присвоение значений счетчику цикла в теле этого цикла недопустимо." (стр. 102)

Впрочем, если бы вы потрудились проверить свой совет - то наткнулись бы на ошибку компиляции.


 
NAlexey ©   (2003-11-05 08:13) [19]

>присвоение значений счетчику цикла в теле этого цикла недопустимо
Всмысле невозможно, или нельзя так делать?


 
NAlexey ©   (2003-11-05 08:31) [20]

>Впрочем, если бы вы потрудились проверить свой совет - то наткнулись бы на ошибку компиляции.
Можно и не наткнуться на ошибку компиляции:

procedure TForm1.Button1Click(Sender: TObject);
var
I, J: Integer;
procedure Foo;
begin
I := 10;
end;
begin
J := 0;
for I := 1 to 10 do
begin
Inc(J);
if I mod 5 = 0 then
Foo;
end;
ShowMessage(IntToStr(I) + " / " + IntToStr(J));
end;


 
Amoeba   (2003-11-05 11:27) [21]

Не пора ли перенести эту ветку в "Потрепаться"?


 
Stas ©   (2003-11-05 11:31) [22]

NAlexey © (05.11.03 08:31) [20]

Зачем писать кучу кода, когда можно использовать While ?


 
KSergey ©   (2003-11-05 11:51) [23]

> [20] NAlexey © (05.11.03 08:31)

Хорошо, как иллюстрация пойдет, однако вы, уверен, не станете это кому-либо рекомендовать?


 
Anatoly Podgoretsky ©   (2003-11-05 11:51) [24]

Amoeba (05.11.03 11:27) [21]
С чего бы?


 
vpman ©   (2003-11-05 12:56) [25]


> Не пора ли перенести эту ветку в "Потрепаться"?

Явно пора.


 
app ©   (2003-11-05 13:04) [26]

Спасибо, но модератор сам решит, а вот продолжение настаивать на этом привед у удалению сообщеий, как не по теме.


 
NAlexey ©   (2003-11-05 13:04) [27]

>Хорошо, как иллюстрация пойдет
Иллюстрация чего? Того что так делать нельзя? Или иллюстрация того что всетаки компилятор не ругнется на изменение переменной цикла?
>не станете это кому-либо рекомендовать?
Всем рекомендую так делать и почаще, скучно жить скучно.


 
KSergey ©   (2003-11-05 13:27) [28]

> [27] NAlexey © (05.11.03 13:04)
> >Хорошо, как иллюстрация пойдет
> Иллюстрация чего? Того что так делать нельзя? Или иллюстрация
> того что всетаки компилятор не ругнется на изменение переменной
> цикла?

Что у компилятора все же ограничены возможности и обдурить его можно ;)
Хотя рискну предположить, что данная техника при определенном подходе может дать непредсказуемый результат после работы оптимизатора. Правда, пример такой составить не удалось. Явно мало по этому вопросу знаю.
Т.е. интересно: как только переменная цикла встречается в какой-либо процедуре (Foo) - тут же оптимизатор прекращает свой любимый трюк с обратным отсчетом переменной. Даже если функция не вызывается в теле цикла. Думаю, так следано на всякий случай: мало ли какие хитрые связи вздумает программист замудрить в теле цикла. То же присходит при получении адреса переменной цикла, даже если его и не использовать никак...

> Всем рекомендую так делать и почаще, скучно жить скучно.

Хм, а наверное я и впрямь начну активно пользоваться этой технологией. Прямо с завтрашнего дня, спасибо.


 
KSergey ©   (2003-11-05 13:29) [29]

[28] KSergey © (05.11.03 13:27)
Что у компилятора все же ограничены возможности и обдурить его можно ;)


Имелись в виду возможности по телепатии. ;) Да и просто по разбору как же программа будет реально работать, что в чем-то так же сродни телепатии, т.к. выполнять программы компилятор не умеет. ;)



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

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

Наверх




Память: 0.53 MB
Время: 0.025 c
6-56791
Pavel Oliynik
2003-09-18 09:35
2003.11.17
как узнать по іp имя текущего почтаря, если он есть


4-56969
npAKTuk
2003-09-23 15:05
2003.11.17
отлов состояния мышки


14-56843
VID
2003-10-28 13:00
2003.11.17
Админинг Windows 2000 (лок. машина)


3-56488
Василиск
2003-10-28 11:52
2003.11.17
Ошибка при Post


4-56958
stone
2003-09-18 15:00
2003.11.17
Нужна помощь по MAPI