Andabat
@Andabat

Как отличить бесконечный цикл от очень длинного?

Здравствуйте! Мы в универе страдаем обработкой экспериментальных данных средствами языка Си. В результате самописные проги вычислений могут содержать циклы с большим количеством итераций (до 1000). Вопрос по компиляции и отладке. Есть ли какие-то классные приемы что выводить в терминал, например, чтоб отличить долгий цикл от бесконечной петли??Дз то надо делать, но комп боязно терять. Спасибо.
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
В общем случае - никак.

Но вы можете каким-то образом выводить прогресс вычислений в реальном времени. Например, сколько процентов вычислений уже выполнено. Тогда баги будет проще заметить.

Либо можно выводить, как один этап сменяет другой (при условии, что в новом витке будет что-то новое и будет виден прогресс). Например, чтение 1000 файлов может сопровождаться выводом имени файла. И таким образом видно, что прога переходит от одного файла к другому, а не застряла где-то.

Но гарантии, естественно, нет. Даже так может зациклиться бесконечно. Просто это будет проще обнаружить - зависание прогресса, повторение этапов, непонятные скачки прогресса и т.д.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Griboks
@Griboks
Это классическая задача останова. Она не решается алгоритмически. Поэтому вы никогда не узнаете ответа, пока не проверите каждый конкретный случай.

Перестройте свой алгоритм, чтобы он перестал иметь теоретическую возможность бесконечного выполнения. Для этого, в первую очередь, избавьтесь от рекурсии.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
AKCP Новосибирск
от 180 000 ₽
Acamar Пльзень
от 220 000 до 260 000 ₽
Hybrik Красноярск
от 70 000 до 140 000 ₽