2015-05-15 3 views
-1

Я создаю программу (функции которой должны быть рекурсивными), которая принимает последовательность символов пользователя, заканчиваемую периодом, и отображает символы назад на экран. Образец выполнение должно дать:Создание массива символов (пользовательский ввод) через рекурсию

Enter a character: H 
Enter a character: i 
Enter a character: . 
iH 

Я сделал функцию, которая переворачивает массив, который принимает массив символов и его размер в качестве параметров.

void print_backwards(char a[], int size){ 
    int i = size-1; 
    cout << a[i]; 
    i--; 
    if(i >= 0){ 
     print_backwards(a, i); 
    } 
} 

У меня есть проблема, однако, с инициализацией массива символов с использованием рекурсии. Как я могу решить эту проблему?

+0

не получил его. int char_count = 2; print_backwards (a, char_count) ;? – 911

+0

Функция print_backwards реализует только реверсирование массива символов. В основной функции, если вы вручную объявили массив символов, {'H', 'i'} и int size = 2, а print_backwards возьмет эти два параметра, он отобразит 'iH'. – Marbille

ответ

1

Это звучит как домашняя проблема, поэтому я не собираюсь решать проблему за вас. Однако я могу дать вам толчок в правильном направлении.

Сделайте функцию, которая принимает массив символов по ссылке и смещению.
При первом вызове функции дайте ему смещение нуля и передайте ему пустой массив.

Сама функция должна читать один символ от пользователя.
Если символ равен ., напишите нулевой байт в текущую позицию и верните текущее смещение, иначе напишите предоставленный символ в текущую позицию, а затем снова вызовите функцию со смещением + 1.
Функция вернет длину ввода.

Тело функции будет выглядеть как

// Get character from user 

if (c == '.') { 
    input[offset] = '\0'; 
    return offset; 
} else { 
    input[offset] = c; 
    return thisFunction(input, offset+1); 
} 
Смежные вопросы