Этот код должен преобразовывать верхний регистр в нижний и наоборот .. проблема в том, что он возвращает верхний и нижний регистр .. например, когда я ввожу слово "тунец", он возвращает "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;
} 
1
alabasi 17 Сен 2013 в 14:01
1
Пожалуйста, укажите язык ...
 – 
opalenzuela
17 Сен 2013 в 14:41

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;
} 
1
Maxime Chéramy 17 Сен 2013 в 14:18
Вам следует «принять» ответ, если вы считаете, что он отвечает на ваш вопрос. Таким образом, люди будут знать, что проблема решена.
 – 
Maxime Chéramy
17 Сен 2013 в 15:39