Доброго всем. Есть код, в рамках которого совершенно не могу понять поведение переменной i. Собственно счетчик циклов, переменная i должна увеличиваться в цикле, определенном как while(i<=cycles). Однако этого не происходит (это видно по выводу на индикатор). Следовательно она каждый раз обнуляется? Сколько не смотрел, не могу найти косяк. Если кто ткнет носом -- буду весьма благодарен.
Спойлер
не... читать код, где объявления переменных встречаются где угодно - нафиг. Не каждый компилятор такое вообще позволит, и я не хочу.
но навскидку: while (i <= cycles) { - этот цикл бесконечен, и это было бы очевидно, напиши Вы программу нормально.
я знаю, что чужой код читать трудно. И каждый знает, как надо писать правильно. Но почему-то никто не пишет.
ИМХО, совершенно очевидно, что цикл while (i <= cycles) не бесконечен.
[uquote="Муркиз",url="/forum/viewtopic.php?p=4492017#p4492017"]Да, читать трудно, но кажется - у тебя цикл в цикле имеется по i ?[/uquote]
где? У меня глаз замылился, я не вижу, но вполне возможно
Возьми текстовый редактор с подсветкой синтаксиса кода, типа UltraEdit , Notepad++, Bred - там быстрее ошибки такого рода найдешь.
ЗЫ. Не хочешь иметь таких проблем - для каждого цикла используй уникальную переменную. Настолько уникальную, чтобы и с вложениями совпасть не могла.
У С в этом ахиллесова пята.
, в while для этого понадобится отдельный оператор.
А за такое оформление кода на программерском форуме высекли бы розгами. Правила хорошего тона: форматировать отступами, чтобы наглядно выделялись логически законченные блоки. Хотя бы как здесь:
[uquote="Муркиз",url="/forum/viewtopic.php?p=4492033#p4492033"]Возьми текстовый редактор с подсветкой синтаксиса кода, типа UltraEdit , Notepad++, Bred - там быстрее ошибки такого рода найдешь.[/uquote] Панятна. Ты суслика видишь:? Нет. И я -- нет, а он -- есть. В моем первом посте была ключевая фраза "ткните носом". А бла-бла-бла про возьми редактор с подсветкой синтаксиса -- это и я умею. Только толку от этого -- ноль. Это не помощь, это вы@бывание. Уж извини за прямоту.
[uquote="Jack_A",url="/forum/viewtopic.php?p=4492056#p4492056"]Так с чего ей изменяться? Не вижу нигде в этом цикле i++ .[/uquote]
[uquote="Martian",url="/forum/viewtopic.php?p=4492064#p4492064"]Но это ни разу не очевидно, потрудитесь привести код в порядок, а не предлагать обществу франкенштейна бездумно-скопипастенного.[/uquote]
а... расставьте табуляцию так, как я привык? Понимаю, но не настаиваю на вашем участии. Всего хорошего.
В общем оказалось, что дело не в расстановке табуляции
Реальная систем в железе имеет "хвост" из колебаний значения value_temperature. Аппаратный "дребезг" температуры. И каждый переход через целевое значение target_temperature вызывает соответствующую обработку и я просто вылетаю из цикла while быстрее, чем могу это заметить своим глазом без окулиста. Осталось придумать, как програмно подавить "хвост", длительность которого заранее не известна.
Land писал(а):
Код:
++i;// Increment cycle count
не считово?
не считово, так как находится за пределами бесконечного цикла while (i <= cycles).
внутри этого цикла i не изменяется, поэтому цикл бесконечный - выхода из цикла нет.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Муркиз, отступы, они же табуляция, всего лишь удобство чтения кода. Кому-то удобно так, кому-то -- эдак. Ни на какую логику кода они ни как не влияют. Но ты имеешь право думать по-другому.
[uquote="Starichok51",url="/forum/viewtopic.php?p=4492088#p4492088"]не считово, так как находится за пределами бесконечного цикла while (i <= cycles).
внутри этого цикла i не изменяется, поэтому цикл бесконечный - выхода из цикла нет.[/uquote]
хорошая версия, но нет. инкремент находится внутри цикла while. Даже более того, он находится внутри условия if (!output && value_temperature < target_temperature), которое находится внутри цикла while. Я понимаю, что читать чужой код тяжело и не попросил бы этого делать. Но...
Добавлено after 45 seconds: Starichok51, когда я был моложе и глупее, я тоже любил говорить за всех. Потом повзрослел.
Land, этот код называется "быдлокод", и не надо тут уговаривать, что это не так.
Постыдился бы выкладывать подобное. И да, об авторе это тоже многое говорит.