Записать символы в файл в обратном порядке

Рейтинг: -1Ответов: 1Опубликовано: 30.04.2015

С клавиатуры вводятся символы, необходимо получить файл с этими символами, записанными в обратном порядке (например, при вводе 12134 в файл нужно записать 43121)

Нельзя использовать массивы (количество символов может быть очень велико) и функцию fseek()

Ответы

▲ 1

Основная идея здесь - использовать рекурсию вместо цикла для чтения и записи символов. Ведь для того, чтобы вывести N чисел в порядке, обратном чтению, нужно сначала вывести N-1 последнее число в обратном порядке, а затем - первое. Продолжая аналогию, доходим до N = 1, в этом случае просто выводим число.

В псевдокоде идея выглядит так:

функция вывести_N_чисел_в_обратном_порядке(N)
    x = прочитать_число()
    если N > 1
        вывести_N_чисел_в_обратном_порядке(N - 1)
    вывести_число(x)

Основной трюк здесь - хранение прочитанных чисел в стеке вызовов, что позволяет, во-первых, обойтись без явного объявления массива, а во-вторых, вытаскивать числа в порядке, обратном записи.