Для начинающих практическое применение студентов.
(т.е. речь идёт о студентах, но тема как-раз больше для преподавателей, которые могут поручать такие задачи для выполнения)
Потому что всякие "учебные" вопросы (которые очень любят на собеседованиях, тестах) ... типа чему будет равно X+++++Y - это не вопросы, а головоломки, ... задрочки, и не имеют никакого касательства ни к знанию C, ни к методике программирования.
Хорошей задачей я могу считать:
- короткую, простую, не перегруженную деталями задачу ... небольшую
- в которой есть некоторые "подводные камни", необходимость возвращаться к решению по 2-му и 3-му кругу - обычно это обработка ошибок и реакция на неправильный ввод данных пользователем
Например, задача решения "школьного" квадратного уравнения A*X**2 + B*X + C = 0 - очень из этой области ... о чём пишут в знаменитой книжке Моулер и Форсайт, где говорят, что написать хорошую программу решения квадратного уравнения - искусство ... особенно если учитывать возможность плохой численной определённости при некоторых значениях коэффициентов.
Хорошим примером будет итерационное решение нелинейного уравнения f(X) = 0 -- например, бисекцией начального интервала решения [X1 ... X2], но интерес здесь в том, чтобы не задавать произвольную (с потолка) точность завершения итераций, типа EPS=1e-7, а сначала найти её максимально достижимое значение циклом поиска по типу:
Код: Выделить всё
double EPS = 1.0;
while( 1. + EPS != 1. ) EPS /= 2.;
EPS *= 2.;