Rekurencja a pobor informacji

0

Cześć. Mam problem z poniższym zadaniem

Stosując rekurencje musze pobrać z klawiatury ciąg znaków, aż do momentu naciśnięcia klawisza . i Enter. Następnie wyprowadza go na konsolę w odwrotnym porządku. 

Ciąg ma być wielkościowo nieograniczony

Na razie mam coś takiego.

#include <iostream>

using namespace std;

void reverse(char *txt){
    if(*txt != '\0'){
        reverse(txt+1);
        cout << *txt << endl;
    }
}

int main(){
    char* txt = "Super text";
    reverse(txt);
}

Tu rekurencyjnie wyswietlam odwróconą tablice ale jak mam podac nieograniczony ciag znakow, przeciez musze podac wielkosc tablicy...

0

Twój kod nie skompiluje się na żadnym kompilatorze zgodnym ze standardem (tutaj masz szczęście, żaden w pełni nie jest). Nie jest poprawnym przypisanie char * x = "string literal", musisz użyć char const* lub char x[].

Jeśli chcesz przyjąć ciąg o nieograniczonej długości, to użyj std::string i cin lub getline zamiast męczyć się z C-stringami.

PS: nazwa funkcji reverse jest myląca, powinno być coś w stylu print_reversed

0
#include <iostream>
#include <string>

using namespace std;

void reverse_print(const char *txt)
{
    if (*txt != '\0')
    {
        reverse_print(txt + 1);
        cout << *txt;
    }
}

int main(int argc, char * argv[])
{
    string str;
    getline(cin, str);
    reverse_print(str.c_str());

    system("pause"); //debug only
    return EXIT_SUCCESS;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1