из верхнего регистра в нижний и наоборот

этот код должен преобразовывать верхний регистр в нижний и наоборот.. проблема в том, что он возвращает как верхний, так и нижний.. например, когда я ввожу слово «тунец», он возвращает «TUNAtuna».. помогите, пожалуйста

string rev_letter(string s)
{
    string word = s;
    string final_word="";
    char c;
    for(int i = 0 ; i<=(word.length()-1);i++)
    {
    c=word.at(i);
    if(isupper(c))
    {
        putchar(tolower(c));
        final_word+=c;
    }
    else
    {
        putchar(toupper(c));
        final_word+=c;
    }

    }
    return final_word;
} 

person alabasi    schedule 17.09.2013    source источник
comment
Пожалуйста, укажите язык...   -  person opalenzuela    schedule 17.09.2013


Ответы (1)


Когда вы используете putchar, вы печатаете символ, как вы ожидаете (на экран), но вы не помещаете символ в final_word. В final_word вы фактически помещаете начальное слово.

Попробуй это:

string rev_letter(string s)
{
    string word = s;
    string final_word="";
    char c;
    for(int i = 0 ; i<(word.length());i++)
    {
       c=word.at(i);
       if(isupper(c))
       {
           final_word+=tolower(c);
       }
       else
       {
           final_word+=toupper(c);
       }
    }

    return final_word;
} 
person Maxime Chéramy    schedule 17.09.2013
comment
@ user2786906 Вы должны принять ответ, если считаете, что он отвечает на ваш вопрос. Таким образом, люди будут знать, что проблема решена. - person Maxime Chéramy; 17.09.2013