Тут нужно длинное деление. На каждой итерации. Вычисление через бин поиск или тупо поциферно будет сравнимо или даже быстрее одной итерации. Метод ньютона хорош для нахождения корня с большой точностью. В этой же задаче нужно ровно 0 знаков после запятой.
Roman Razumovich, Ну тогда код, который "по заданному числу определяет кол-во чисел, которые ты можешь ввести" - тривиален. Это само заданное число и есть кол-во чисел "которые ты можешь ввести".
Надо при нажатии кнопок изменять какие-то координаты. Рисовать обе кривые надо только в wm_paint. Координаты/повторот одной считать через вермя. координаты другой брать из переменных, меняемых по нажатию кнопок.
ovsy, Почти. Есть одна ошибка тут: А что, если будет удален первый элемент списка?
По идее, должен изменится head. Но снаружи функции он никак не поменяется. Поэтому надо или передавать ITEM** head, или возвращать новый указатель на начало списка (так логичнее, мне кажется). В этом случае вызвать del_book в main надо так: head = del_book(head);
ovsy, Да. Я бы еще N переименовал в i, например. А еще лучше index или list_index.
Вот вы уже умеете проходится по списку. Для удаления, как я уже сказал надо только поддерживать указатель на next поле у предыдущего элемента и вместо вывода сравнивать названия, пока не найдете нужную книгу.
Вторая часть задания с выводом с определенным годом выпуска - это точно такой же цикл, но надо выводить, если условие выполняется.
kapysta13, как, почему, откуда? Ты можешь взять свой код из вопроса, и тупо сделать замену arr[x] => arr[n-1-x] (кроме ввода и вывода). Можно даже не включать мозг, просто машинально. Видишь arr[ - вписываешь "n-1-(" после "[" и ")" перед "]".
У тебя сейчас намешан сдвиг на 1 (который надо в цикле, как у тебя в вопросе, повторить нужное количество раз), и то ли попытка развернуть массив, то ли попытка сдвинуть сразу на несколько позиций.
Фокс Йовович, Это проблема не C, а легаси-хак в x86 команде idiv:
Non-integral results are truncated (chopped) towards 0
Когда как по уму надо округлять вниз, а не в сторону 0. Но так быстрее и проще считать было, да и кому в голову тогда могло прийти что люди будут делить отрицательные числа... Вот и получилось, что приведенный вами код b[i] = a[ (i-shift) % size ]; - undefined behavior.
kapysta13, Проблема в том, что (i-k)%n может быть отрицательным. Если взять (-3) % 10 - то будет -3, а не 7, как надо в математике. Лечится это прибавлением лишнего n под модулем: (i+n-k)%n