Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2008, 14:53   #11
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
Работает, но что собственно делает оператор "shl"
Сдвигает переменную влево на 1 бит, что эквивалентно умножению на 2.
dimonbest вне форума Ответить с цитированием
Старый 25.03.2008, 15:37   #12
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Квэнди, так ведь _Dmitry счётчик и не трогает...
Цитата:
Сообщение от Квэнди Посмотреть сообщение
Да, согласен, глаза спали видимо
Delphi и не даст изменить счётчик внутри цикла, вылетает ошибка еще на этапе компиляции: Assignment to FOR-Loop variable 'i'.
Проверено в Delphi 7.
_Dmitry вне форума Ответить с цитированием
Старый 25.03.2008, 16:30   #13
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Delphi и не даст изменить счётчик внутри цикла, вылетает ошибка еще на этапе компиляции: Assignment to FOR-Loop variable 'i'.
Проверено в Delphi 7.
И в 2006 тоже так!
Altera вне форума Ответить с цитированием
Старый 03.05.2012, 15:55   #14
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

я вот тоже что-то понять не могу, что в вашей формуле такое i ?
IgoRek125 вне форума Ответить с цитированием
Старый 03.05.2012, 16:17   #15
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

все просто:
PHP код:
t:=2;
for 
counter := 0 to round(100/t) do
begin
   оператор где присутствует счетчик counter умножаем на t
   
end

, где переменная t и есть твой шаг
IgoRek125 вне форума Ответить с цитированием
Старый 03.05.2012, 16:45   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
все просто
и зачем?
цикл while уже не написать?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.05.2012, 02:34   #17
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

Согласен, с while гораздо проще)
IgoRek125 вне форума Ответить с цитированием
Старый 04.05.2012, 03:08   #18
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

мой вариант в любом цикле делать шаг и после него в след. интерации делать действие.
Код:
const
  cCycleStep=2; //размер шага
  cStepDef=1;   // 
var
 iStep:ShortInt;
 iCounter:Integer;
begin
 iStep:=cStepDef; 
   for iCounter:=0 to OVER9000 do 
   begin
    if iStep > cCycleStep then
    begin
      {DO SOMETHING!! DO!!}
    iStep:=cStepDef; 
    end;
    iStep:=iStep+1; //Так проще. 
  end;
end;

{Если важен шаг в 2 раза, то можно и булевыем типом обойтись.
Но эо уже сами напишите}

Последний раз редактировалось Человек_Борща; 04.05.2012 в 03:13.
Человек_Борща вне форума Ответить с цитированием
Старый 04.05.2012, 04:27   #19
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

я потестил немного и пришел к выводу, что машина вдвое быстрей выполняет поставленную перед ней задачу вот в таком варианте
PHP код:
t:=2
for 
counter := 0 to round(100/t) do 
begin 
   оператор где присутствует счетчик counter умножаем на t 
    
end

, где переменная t и есть наш шаг
нежели с оператором whil
IgoRek125 вне форума Ответить с цитированием
Старый 04.05.2012, 04:49   #20
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Простые операции сравнения выполняются быстрее, чем деление и округление дробного числа, что вы делаете в каждом витке.

Последний раз редактировалось Человек_Борща; 04.05.2012 в 04:54.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл... Лёка PHP 5 03.02.2008 21:38
Единицы по диагонали ChipLink Общие вопросы Delphi 2 24.01.2008 19:45
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34
Суммирование ячеек с заданным шагом valerij Microsoft Office Excel 10 10.10.2007 00:22