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

Вниз

Как в цикле уменьнить на еденицу переменную цикла   Найти похожие ветки 

 
AZIZE ©   (2007-07-11 19:16) [0]

Как в цикле уменьнить на еденицу переменную цикла


 
TUser ©   (2007-07-11 19:18) [1]

while
repeat
си

на Паскале в цикле for нельзя


 
Anatoly Podgoretsky ©   (2007-07-11 19:18) [2]

Это делать нельзя, да и Дельфи не позволит.


 
Desdechado ©   (2007-07-11 19:19) [3]

> Anatoly Podgoretsky ©   (11.07.07 19:18) [2]
Чего это вдруг?
for i:=10 downto 0 do
Типичное уменьшение на единицу на каждой итерации.


 
Anatoly Podgoretsky ©   (2007-07-11 19:45) [4]

Он вообще то говорит об ручном изменение переменной цикла.


 
Virgo_Style ©   (2007-07-11 19:57) [5]

а мой телепатор считает, что ему continue подойдет


 
Virgo_Style ©   (2007-07-11 19:59) [6]

Virgo_Style ©   (11.07.07 19:57) [5]

Э, нет. Прошу пардону, подошел бы, если бы надо было перейти на следующую итерацию, если на предыдущую - то нет... Но если цикл с downto, то [5] в силе. В чем я уже весьма сомневаюсь.


 
vpbar ©   (2007-07-11 20:13) [7]

Вообще менять пременную цикла (for - этот ведь цикл имелся ввиду?) нельзя, да и Делфи этого не позволяет. Но если очень хочется то можно. Вот код:

var i:integer;
  p:PINT;
begin
  memo1.Clear;
  for i:=1  to 10 do begin
   p:=@i;
   if i=5 then inc(p^);
   memo1.Lines.Add(inttostr(i));
  end;
end;


 
vpbar ©   (2007-07-11 20:15) [8]

Да. там увеличение inc(p^) а не уменьшение dec(p^), ибо в  этом случае цикл получился бы бесконечный. Поэтому, из-за большой вероятности таких ошибок делать так не рекомендую


 
{RASkov} ©   (2007-07-11 20:31) [9]

[7],[8] все это безобидно решается [5] :)


 
{RASkov} ©   (2007-07-11 20:38) [10]

N:=0;
while N<10 do begin
.....
 if not Verify(N) then DEC(N) else INC(N);
end;


Но отсюда можно и не вылезти...) Хотя можно и так решить:

N:=0;
NStop:=0;
while N<10 do begin
.....
 if not Verify(N) then DEC(N) else INC(N);
 INC(NStop);
 if NStop>=1000 then raise Except.Create("Не могу выйти, закружилась");
end;


 
Anatoly Podgoretsky ©   (2007-07-11 20:54) [11]

> vpbar  (11.07.2007 20:13:07)  [7]

Это не наш метод, а хакерский и чреватый.


 
vpbar ©   (2007-07-11 21:04) [12]

да это наш хакерский метод, потому и не рекомендую



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

Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.036 c
3-1177705087
КрЫска
2007-04-28 00:18
2007.08.12
Символьные даннные из Oracle выдаются как #.


2-1184870250
bagos
2007-07-19 22:37
2007.08.12
крашенный stringgrid


2-1184410046
ASSERT
2007-07-14 14:47
2007.08.12
ProcAddress


15-1184193688
proglereee
2007-07-12 02:41
2007.08.12
Точка доступа Wi-Fi


2-1184816137
zsergey
2007-07-19 07:35
2007.08.12
связка двух таблиц ...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский