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
Лево от право отличить не можешь? Cено-солома: Циферка 3 в твоем нике с правого конца, а буква k - с левого. Соответсвтено, сдвиг влево - apysta13k: на место первого символа встает второй, на место второго - третий и так далее.
В вопросе у тебя сдвиг вправо, я написал, как сделать из него сдвиг влево (например тупой заменой "arr[x]" => "arr[n-1-x]" в цикле.
Артур Гранд, А, ну тогда все просто - поверните мысленно всю вторую грань так, чтобы она стала параллельна синему вектору вокруг ребра. Найдите угол на новую зеленую точку (куда она провернется). Для этого можно взять любую точку на ребре, возьмите с нее вектор на дальнюю зеленую точку и поверните этот вектор вокруг ребра на угол между нормалями двух граней. Отложите новый вектор от той точки на ребре.