Запись счетчика цикла в переменную

Nikitos20100
Offline
Зарегистрирован: 26.12.2013

Добрый день!

 

подскажите, пожалуйста, можно в переменную записать количество выполненных циклов, как пример:

 
   for(b=0;b<10;b++){ // 
    analogWrite(3,80);
    analogWrite(9,78);
    delay(200); 
       z=(analogRead(6));
       if (z<100){
          STOP(1000);
          analogWrite(3,0);
          analogWrite(9,78);
          delay(650);      //
          STOP(500);
             analogWrite(3,80);
             analogWrite(9,78);
             delay(500);
             n=b;
   

или подскажите как лучше.

 

Спасибо!

Nikitos20100
Offline
Зарегистрирован: 26.12.2013

имеется ввиду - в конце цикла в некую переменную "n" записать количество выполненных циклов "b", (в данном случае)

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013
int n = 0;
for...{
.....
if...{
.....
n++;}
}

После цикла - в одном контексте с считаеимым выполнением. С иницилизацией вне контекста.

Смысл в том чтобы увеличивать переменную всякий раз после выполнения цикла.

А точнее вам скажут есл предоставите код полностью.

Nikitos20100
Offline
Зарегистрирован: 26.12.2013

Спасибо за комментарий, вопрос немного в другом.

Да, цикл повторяется если условие в скобках выполняется "b<10" и с каждым циклом идет приращение этого "b". Цикл повторился несколько раз, например - 5 раз. Затем наступило условие на основании которого мы цикл прерываем, но нужно запомнить, сколько раз цикл повторился. Вопрос: корректно будет написать, что некая переменная "n" теперь равна счетчику цикла "b"?

toc
Offline
Зарегистрирован: 09.02.2013

Nikitos20100 пишет:

Вопрос: корректно будет написать, что некая переменная "n" теперь равна счетчику цикла "b"?

да.

leshak
Offline
Зарегистрирован: 29.09.2011

Nikitos20100 пишет:

или подскажите как лучше.

Вы не поверите, но лучше всего так:

for(b=0;b<10;b++){ // 

Хотя, конечно, можно и посложней что-нибудь придумать.

Nikitos20100
Offline
Зарегистрирован: 26.12.2013

Спасибо! но, честное слово, вопрос в другом. Задание условия исполнения цикла уже освоил.

Эта переменная, которая объявлена не в setup, а в теле программы, в loop - будет доступна во всем теле программы? Если присвоение переменной "n" производится в одном цикле "for" будет доступна в другом цикле "for"?

Никак не идет отладка программы, пытаюсь понять где могут быть глюки?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

loop повторяется - повторное инициирование переменной сбрасывает ее.

Правильнее вне loop и setup обьявлять глобальные переменные.

почитайте про Scope - область видимости переменных.

leshak
Offline
Зарегистрирован: 29.09.2011

Nikitos20100 пишет:

Спасибо! но, честное слово, вопрос в другом. Задание условия исполнения цикла уже освоил.

А причем тут "задание условия"?  Вы спрашивали " в переменную записать количество выполненных циклов".

Ответ: ничего для этого делать не нужно. Этим занимается сам оператор for. После того как цикл завершится (не важно, по условию выхода, или вы где-то внутри него сделали break) в переменной будет значение "количество выполненных циклов". Полностью выполненых, тот кого мы преравли по break-e - в нее не "засчитается".

В переменную записали количество выполненных циклов - за вас.

Что дальше делать с этой переменой: сохранить в другую переменную, вернуть как результат функции - уже ваше дело. Это такая же переменная как и любая другая. Никакой "особости", из-за того что ее использовали в качестве счетчика функции у нее нет.

Как сохранить переменную между вызовами функций (любую переменную), где она будет видна, время ее жизни и т.п. зависит от того где и как вы ее объявили. Внутри функции или снаружи. С ключевым словом static или без онного. Но, как правильно заметил NeiroN  это уже другая история. Называется "область видимости переменных". И эта история к циклам - не имеет никакого отношения.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Чтобы глобальный счетчик не обнулялся.. Не обнуляйте его и используйте цикл на while.

Пока условие исполняется счетчик внутри while прирастает, иначе проскакивает без приращения.

то, что дано в первом посте вообще программой считать нельзя , хотя бы из-за отсутствия закрывающих фигурных скобок.

если хотите помощи дайте то, что пытаетесь отлаживать целиком...

Nikitos20100
Offline
Зарегистрирован: 26.12.2013

Ребята! Спасибо вам всем большое! Помощь оказали вы мне бесценную! Все что рекомендовали - попробовал, результаты скину может быть позже! Еще раз спасибо!