Выбрать соревнование | Задачи | Послать решение | Результаты проверки | Статистика по задачам | Вопросы и ответы | Результаты соревнования | Состояние сервера | Изменить данные | Управление командой | Помощь |
01/09/2007 | Основы программирования. Указатели (E) |
Ограничения: время – 250ms/500ms, память – 128MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Напишите функцию split, которой передается строка, в которой находятся несколько слов, разделенных одним пробелом.
Функция должна поместить в массив, переданный вторым аргументом, указатели на начало слов. Символы пробела (' '
) в строке нужно заменить на нулевой символ ('\0'
).
Последним элементом в массив нужно поместить нулевой указатель (NULL).
Напишите функцию void print(char **), которая печатает слова из массива указателей в обратном порядке. Для этого проверяется первый указатель в массиве. Если он равен NULL, то выполнение функции заканчивается. Иначе функция print вызывается рекурсивно для печати оставшейся части массива, а затем на отдельной строке печатается слово, на которое указывает первый элемент массива.
Пример вызова функций:
#include <stdio.h>
// определения split и print
...
int main()
{ char str[1001];
char *words[101];
scanf("%1000[^\n]",str); getchar();
split(str,words);
print(words);
}
В качестве решения необходимо отправить только функции split и print.