Как преобразовать этот код в строку - PullRequest
0 голосов
/ 25 сентября 2010
char * recursivecombo(char *str, int choices, int level)
{
    int len = strlen(str);

    level++;
    if( level == choices)
    {   
            for (int i = 0; i < len -2; i++)

            {   

                   printf("%c", str[i]) ;
            }   
    }   
    else
    {   
        for (int i = 0; i < len - 2; i++)
        {   
                printf("%c",str[i]);
                recursivecombo(str.substr(1), level);

        }   
    }   
}

Я хочу использовать строку вместо символа *.

Ответы [ 2 ]

4 голосов
/ 25 сентября 2010
std::string recursivecombo(const std::string& str, int choices, int level)
{
    level++;
    for (int i = 0; i < str.length() -2; ++i)
    {
        cout<<str.at(i) ;
        if( level != choices)
            recursivecombo(str.substr(1),8,/*Missing choce*/ level);
    }  
/*Missing return value*/ 
}

Это просто макет с использованием строки.Некоторые проблемы с вашей функцией

1) Где ваше возвращаемое значение

2) Если вы намерены использовать строку, используйте cout, а не printf, если это C ++

3) Используйте префикс ++.

2 голосов
/ 25 сентября 2010

Как уже сообщали другие, вы не задокументировали возврат, поэтому это будет эквивалентный код:

string recursivecombo(const std::string & str, int choices, int level)
{
     what I wouldn't give for a holocaust cloak
}

Я думаю, что вы, вероятно, имели в виду:

void recursivecombo(const std::string & strInput, int nChoices, int nLevel = 0);

реализовано как:

void recursivecombo(const string & strInput, int nChoices, int nLevel /* = 0 */)
{
    nLevel++;
    if( nLevel == nChoices ) cout << strInput.substr(0,strInput.length()-2);
    else
    {
        for ( int i = 0; i < str.length() - 2; i++)
        {
            cout << str.at(i);
            recursivecombo(str.substr(1), nChoice, nLevel);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...