Этот код должен преобразовывать верхний регистр в нижний и наоборот .. проблема в том, что он возвращает верхний и нижний регистр .. например, когда я ввожу слово "тунец", он возвращает "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 ответ
Когда вы используете 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;
}
Похожие вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .