Цикл: экономим переменные
От: dikun Беларусь  
Дата: 06.04.05 22:03
Оценка:
Сори, что на Pascal'е, но так было...
procedure proc(_start, _end: byte);
begin
{организуем цикл for от _start до _end с шагом 1. Заводить новые переменные 
нельзя!}
end;

Как организовать этот цикл?
Posted via RSDN NNTP Server 1.9
Re: Цикл: экономим переменные
От: GarryIV  
Дата: 06.04.05 23:16
Оценка:
Здравствуйте, dikun, Вы писали:

D>Заводить новые переменные нельзя!


рекурсия?
WBR, Igor Evgrafov
Re: Цикл: экономим переменные
От: Erop Россия  
Дата: 07.04.05 05:16
Оценка:
Здравствуйте, dikun, Вы писали:

D>Как организовать этот цикл?


А почему нельзя заводить новые переменные?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Цикл: экономим переменные
От: Назарет http://www.trenajor.ru/
Дата: 07.04.05 05:21
Оценка:
E>Здравствуйте, dikun, Вы писали:

D>>Как организовать этот цикл?



for(;e>s;s++)

Угадал?
Re: Цикл: экономим переменные
От: ilnar Россия  
Дата: 07.04.05 06:17
Оценка:
Здравствуйте, dikun, Вы писали:

D>Сори, что на Pascal'е, но так было...

D>
D>procedure proc(_start, _end: byte);
D>begin
D>{организуем цикл for от _start до _end с шагом 1. Заводить новые переменные 
D>нельзя!}
D>end;
D>

D>Как организовать этот цикл?

procedure proc(_start, _end: byte);
begin
if _start < _end then proc(_start+1, _end);
end;
Re: Цикл: экономим переменные
От: Socrat Россия  
Дата: 07.04.05 07:09
Оценка: 1 (1)
Здравствуйте, dikun, Вы писали:

D>Сори, что на Pascal'е, но так было...

D>
D>procedure proc(_start, _end: byte);
D>begin
D>{организуем цикл for от _start до _end с шагом 1. Заводить новые переменные 
D>нельзя!}
D>end;
D>

D>Как организовать этот цикл?

for (; start <= end; start++)


Не знаю, можно ли в паскале написать так:

for start := start to end do


Если нет, то использовать while.
Re: Цикл: экономим переменные
От: Кодт Россия  
Дата: 07.04.05 08:11
Оценка:
Здравствуйте, dikun, Вы писали:

D>procedure proc(_start, _end: byte);
D>begin

  while _start < _end do begin
    { body goes here }
    _start := _start + 1;
  end;

D>end;

Такой вариант имеет ограничения, т.к. не позволяет использовать continue и break. Если же они нужны — придётся повыкручиваться.
while _start < _end do begin
  repeat
    { тело цикла }
    if(something()) continue;
    { ... }
  until false; { цикл выполняется единожды }
  inc(_start);
end;
Перекуём баги на фичи!
Re[2]: Цикл: экономим переменные
От: Кодт Россия  
Дата: 07.04.05 08:16
Оценка:
Здравствуйте, Socrat, Вы писали:

S>Не знаю, можно ли в паскале написать так:

S>
S>for start := start to end do
S>

S>Если нет, то использовать while.

Точно! Правильно! В обычном паскале так можно и нужно — границы цикла вычисляются единожды, до начала итераций.
Перекуём баги на фичи!
Re: Цикл: экономим переменные
От: BlackHeretic Израиль  
Дата: 07.04.05 08:20
Оценка:
Здравствуйте, dikun, Вы писали:

D>Сори, что на Pascal'е, но так было...

D>
D>procedure proc(_start, _end: byte);
D>begin
D>{организуем цикл for от _start до _end с шагом 1. Заводить новые переменные 
D>нельзя!}
D>end;
D>

D>Как организовать этот цикл?

Паскаль к сожалению уже не помню, но на С реализовал бы так:


void proc(unsigned char _start, unsigned char _end)
{
  for(;_start<=_end; _start++)
    ;
}
ICQ 156156278
Re[2]: Цикл: экономим переменные
От: dikun Беларусь  
Дата: 07.04.05 16:30
Оценка:
GarryIV:

> рекурсия?


Как при помощи рекурсии организовать цикл for?
Posted via RSDN NNTP Server 1.9
Re[2]: Цикл: экономим переменные
От: dikun Беларусь  
Дата: 07.04.05 16:34
Оценка:
Erop:

> А почему нельзя заводить новые переменные?


"но так было..."
Posted via RSDN NNTP Server 1.9
Re[3]: Цикл: экономим переменные
От: dikun Беларусь  
Дата: 07.04.05 16:38
Оценка:
Назарет

> Угадал?


Не угадал с языком, хотя решение правильное
Posted via RSDN NNTP Server 1.9
Re[2]: Цикл: экономим переменные
От: dikun Беларусь  
Дата: 07.04.05 16:40
Оценка:
ilnar:

>
> if _start < _end then proc(_start+1, _end);
>


Как тогда понять, что организован именно цикл for?
Posted via RSDN NNTP Server 1.9
Re[2]: Цикл: экономим переменные
От: dikun Беларусь  
Дата: 07.04.05 16:42
Оценка:
Socrat:

> Не знаю, можно ли в паскале написать так:


Молодец! Правильно!
Posted via RSDN NNTP Server 1.9
Re[3]: Цикл: экономим переменные
От: dikun Беларусь  
Дата: 07.04.05 16:45
Оценка: -2
Кодт:

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

> до начала итераций.

В том-то и дело, что пересчитываются каждый раз, как нижняя, так и верхняя.
И при этом такое будет работать!
Posted via RSDN NNTP Server 1.9
Re[2]: Цикл: экономим переменные
От: dikun Беларусь  
Дата: 07.04.05 16:47
Оценка:
Кодт:

>[...]


Ой! Чур меня, чур меня!
Posted via RSDN NNTP Server 1.9
Re[4]: Цикл: экономим переменные
От: iGorash Россия http://therebel.no-ip.org
Дата: 07.04.05 17:54
Оценка: 6 (1)
> В том-то и дело, что пересчитываются каждый раз, как нижняя, так и верхняя.
По стандарту — нет, вычисляются один раз. В Борланде, вроде, тоже не пересчитываются.
Posted via RSDN NNTP Server 1.9
Re[5]: Был не прав!
От: dikun Беларусь  
Дата: 07.04.05 21:56
Оценка: 1 (1)
Здравствуйте, iGorash, Вы писали:

G>По стандарту — нет, вычисляются один раз. В Борланде, вроде, тоже не пересчитываются.


Да, сказал глупость.

THE RULES OF ISO 7185 PASCAL

*************
FOR STATEMENT
*************
The for statement executes a statement a fixed number of times:
for i := lower to upper do statement
for i := upper downto lower do statement
The for statement executes the target statement as long as the "control
variable" lies within the set range of lower..upper. It may not execute
at all if lower > upper.
The control variable in a for is special, and it must obey several rules:
1. It must be ordinal.
2. It must be local to the present block (declared in the present block).
3. It must not be "threatened" in the executed statement. To threaten means
to modify, or give the potential to modify, as in passing as a VAR parameter
to a procedure or function (see below).


Спасибо, что исправили!
Re[3]: Цикл: экономим переменные
От: pearlie Россия https://kochetkov.github.io
Дата: 08.04.05 08:26
Оценка: :)
dikun пишет:
> Как при помощи рекурсии организовать цикл for?

Примерно так:

void Iteration(int _start, _end) {
// ----------------
// Здесь тело цикла
// ----------------
if (_start != _end) {
Iteration(_start++, _end)
}
}
Posted via RSDN NNTP Server 1.9

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Цикл: экономим переменные
От: Socrat Россия  
Дата: 08.04.05 11:36
Оценка: 1 (1)
Здравствуйте, pearlie, Вы писали:

P>dikun пишет:

>> Как при помощи рекурсии организовать цикл for?

P>Примерно так:


P>void Iteration(int _start, _end) {

P> // ----------------
P> // Здесь тело цикла
P> // ----------------
P> if (_start != _end) {
P> Iteration(_start++, _end)
P> }
P>}

Просто супер. Когда будет сделан инкремент?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.