Как проверить состояние, которое никогда не встречается? - PullRequest
1 голос
/ 06 января 2012

Возьмем пример для пояснения, скажем, у меня есть программа, которая принимает два ввода от пользователя, a и b.Программа увеличивает a и уменьшает b.Программа возвращает значение, при котором a и b становятся равными.Следовательно, a должно быть меньше, а b должно быть больше.Но что, если пользователь вводит противоположное?а как больше и б как меньше?Программа пошла бы в бесконечный цикл, очевидно.Но предположим, что я хочу, чтобы программа вернула, что «эти два числа никогда не встретятся».Тогда как я могу проверить это?Пожалуйста, не отвечайте на эту проверку номеров и отвечайте соответственно.Это всего лишь пример.Я хочу знать, как проверить условие, которое никогда не может быть выполнено.

Другой пример, скажем, сравнение двух чисел.Предположим, у меня есть два числа, и я продолжаю их рандомизировать.Программа должна вернуть true, если они равны, и false, если они не равны.Он не должен идти в бесконечный цикл, когда числа не равны.Я могу только продолжать сравнивать числа в каждой итерации и возвращать true, как только они равны.Но есть вероятность, что они никогда не станут равными, и программа никогда не завершится.Как проверить такой сценарий и вернуть что-то вроде числа, никогда не может быть равным.

Ответы [ 2 ]

1 голос
/ 06 января 2012

Это должно быть сделано на индивидуальной основе;общая задача (учитывая итеративную процедуру, управляемую переменным условием, определить, будет ли условие когда-либо принимать данное значение, например, True), эквивалентна проблеме остановки, которая не вычислима ...

0 голосов
/ 06 января 2012

Простое утверждение if, как это?

if (a <= b)
  throw "Condition cannot be met"
else
    for ( ; a != b; a--, b++) {
        // Do something
    }

Пример на c ++

РЕДАКТИРОВАТЬ Я неправильно понял A и B! По тому же сценарию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...