«С» Trial Test

This Test consists of 5 tasks. Every task values with certain points (100 point for all of them). In order to pass this test successfully you should garner more than 60 points.
All the programs should be written with the usage of «C».
You have 4 hours of general time to complete the Test. You may do tasks in any order and use any literature.

Task 1. (30 points)

Напишите функцию: int permutation (int n);
Которая печатает все перестановки числе от 1 до n (по 1 комбинации в каждой строке).

Например, при n равном 2 функция должна напечатать 2 строки:
1 2
2 1
При n равном 3 функция должна напечатать 6 строк:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

При написании функции обратите внимание, что при произвольном n функция должна напечатать 1*2*3*4*…*(n-1)* n строк. Предложите возвращаемое значение.

Task 2. (20 points)

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

Например, для данного бинарного дерева будет напечатано:
A
B C
D E F

Task 3. (20 points)

Напишите функцию: char* sort_words (char* n);
которая сортирует слова входной строки по алфавиту (как в словаре). Для входной строки гарантируется, что она может содержать только символы пробела и букв русского алфавита (в обоих регистрах).

Например, входная строка «Ура нам и Вам» должна быть заменена на «Вам и нам Ура». Из двух слов, начинающихся на одну и ту же букву, но в разных регистрах, слово с заглавной буквы должно идти левее. Например, «Нес антенну Антон» должно быть заменено на «Антон антенну нес».

Task 4. (20 points)

Напишите функцию для поиска файлов, содержащих заданную строку. Прототип функции: char* FindFileByText (char* szStartDir, char* szFileMask, char* szTextPattern); Ваша функция должна просканировать дерево директориев, начиная со стартового szStartDir, и найти первый файл, содержащий строку szTextPattern, имя которого соответствует маске szFileMask.

Task 5. (10 pints)

Напишите функцию: boolean IsBetween (char* Time, char* Start, char* End);
где Time, Start, End: время в формате “hh:mm”, например, “23:15”. Функция должна возвратить TRUE, если “Time” попадает между ‘Start’ и ‘End’. Случай End < Start, например (“23:11”, “8:05”) должен быть рассмотрен как: от ‘Start’ до ‘End’ на следующий день.