Смена строчных букв на прописные в переполнении стека

Вот код, который я написал. Когда я ввожу строчный символ, такой как «а», он дает мне пустой символ, но после этого он работает хорошо. Можете ли вы сказать мне, что я сделал не так? Благодарю. 🙂

#include <iostream>
#include <string>
using namespace std;

int main()
{
char letter;

cout << "You will be asked to enter a character.";
cout << "\nIf it is a lowercase character, it will be converted to uppercase.";
cout << "\n\nEnter a character. Press . to stop: ";

cin >> letter;

if(islower(letter))
{
letter = isupper(letter);
cout << letter;
}

while(letter != '.')
{
cout << "\n\nEnter a character. Press . to stop: ";
cin >> letter;

if(islower(letter))
{
letter = toupper(letter);
cout << letter;
}
}

return 0;
}

2

Решение

Потому что вы печатаете bool значение (т.е. falseака, NUL персонаж здесь) в первый раз.

Вы должны изменить

letter = isupper(letter);

в

letter = toupper(letter);
5

Другие решения

Смотри сюда:

if(islower(letter))
{
letter = isupper(letter);
cout << letter;
}

Если символ ниже, то вы присвоили ему возвращаемое значение isupper, Это должно быть 0. Таким образом, вы печатаете нулевой символ.

Почему бы тебе просто не позвонить toupper для каждого персонажа, который вы вводите? Если он ниже, он будет конвертировать его, если он уже выше, он ничего не будет делать.

2

Если вы хотите свой собственный алгоритм:

#include<iostream>
#include<string>

using namespace std;

int main()
{
char ch = '/0';
string input("Hello, How Are You ?");
for(size_t i=0; i<input.length(); i++)
{
if(input[i]>=97 && input[i]<=122)
{
ch=input[i]-32;
}
else
{
ch = input[i];
}
cout << ch;
}

return 0;
}
0
По вопросам рекламы [email protected]