Задачи на указатели

Решите задачи без квадратных скобок кроме создания массива и конструкций вида *(a+i).  

A: Ближайшее число

Дан массив целых чисел и некоторое число. Найдите в данном массиве элемент, ближайший к заданному.

В первой строке заданы элементы массива (целые числа, не превосходящие по модулю 1000).

Во второй строке дано одно целое число \(x\), не превосходящее по модулю 1000.

Выведите значение элемента массива, ближайшее к \(x\). Если таких чисел несколько, выведите последнее из них.

Ввод Вывод
5
3 8 4 7 9
5
4
5
1 2 4 5 6
3
4
3
1 2 3
2
2

C: Соседи одного знака

Дан массив. Если в нем есть два соседних элемента одного знака, выведите эти числа. Если соседних элементов одного знака нет - не выводите ничего. Если таких пар соседей несколько - выведите первую пару.

Примечание. В этой задаче нужно реализовать алгоритм линейного поиска: найти такую первую пару элементов, удовлетворяющую заданному условию. Алгоритм линейного поиска пишется при помощи цикла while, а не при помощи цикла for.

Ввод Вывод
5
-1 2 3 -1 -2
2 3

D: Переставить соседние

Переставьте соседние элементы массива (A[0] c A[1], A[2] c A[3] и т.д.). Если элементов нечетное число, то последний элемент остается на своем месте.

Ввод Вывод
5
1 2 3 4 5
2 1 4 3 5

E: Циклический сдвиг вправо

Циклически сдвиньте элементы массива вправо (A[0] переходит на место A[1], A[1] на место A[2], ..., последний элемент переходит на место A[0]).

Используйте минимально возможное количество операций присваивания.

Ввод Вывод
5
1 2 3 4 5
5 1 2 3 4

F: В обратном порядке

Дана строка. Выведите её символы в обратном порядке, по одном символу в строке.

Ввод Вывод
Python
n
o
h
t
y
P

G: Количество слов

Дана строка, состоящая из слов, разделенных пробелами. Определите, сколько в ней слов.

Ввод Вывод
Hello world
2

H: Удаление символа

Дана строка. Удалите из этой строки все символы @.

Ввод Вывод
Bilbo.Baggins@bagend.hobbiton.shire.me
Bilbo.Bagginsbagend.hobbiton.shire.me

I: Две половинки

Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами.

Результат выведите *в звездочках*.

Ввод Вывод
Hi
*iH*
Hello
*loHel*

J: Переставить два слова

Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами.

Ввод Вывод
Hello world
*world Hello*