Функция, предназначенная для преобразования слова в верхний или нижний регистр, преобразует все слова в верхний или нижний регистр. То, что я хочу сделать, - это преобразовать определенное количество символов в строку в верхний или нижний регистр. Возьмем, например, строку слов. Если пользователь только хочет преобразовать букву S в строку слова в верхний регистр, тогда вывод должен быть: String. Кроме того, эта функция учитывает, если слово, которое они хотят преобразовать, уже находится в верхнем или нижнем регистре.Как преобразовать определенное количество символов в верхний или нижний регистр и подсчитать, сколько прописных и строчных букв имеет слово
Пример: Пользователь вводит слово STRING. хочет преобразовать слово в STRING. выход: STRING
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
//Function Prototype
int CountVowels(string, int &);
void ShowMenu(string &, char &);
void convertword(string &);
int main()
{
//Variables
string word;
char choice = '0';
int vowels = 0;
do
{
//Call Functions
ShowMenu(word, choice);
switch(choice)
{
case '1':
cout << CountVowels(word, vowels);
cout << endl << endl;
break;
case '2':
convertword(word);
cout << endl << endl;
break;
}
}while(choice != '5');
return 0;
}
void ShowMenu(string& word, char& choice)
{
cout <<"\t\tMENU\t\t" << endl
<<"===========================================" << endl;
cout <<"1. Find the number of Vowels in a word" << endl
<<"2. Convert to uppercase or lowercase " << endl
<<"3. Count the number of uppercase letters " << endl
<<"4. Count the number of lowercase letters" << endl
<<"5. Quit"
<<"\n===========================================" << endl;
//Get menu choice and get word from user.
cout << endl;
cout <<"Enter a choice: ";
cin >> choice;
while((!isdigit(choice)) || (choice > '5'))
{
cerr << "\nOut of range or invalid input. ";
cin >> choice;
}
cin.ignore();
cout << endl;
cout << "Enter a word: ";
getline(cin, word, '\n');
}
int CountVowels(string word, int& vowelCount)
{
vowelCount = 0;
int numLetters = word.length(); //get the number of letters in a word
for (int i = 0; i < numLetters; i++)
{
char letter = word[i]; //get the ith letter in the word
if (letter == 'a' || letter == 'e' ||
letter == 'i' || letter == 'o' ||
letter == 'u' || letter == 'y')
{
vowelCount++;
}
}
cout << "\nThe number of vowels in this word is : ";
return vowelCount;
}
void convertword(string &word)
{
bool same = false;
char response;
cout << "\nWould you like to convert this word to uppercase or lowercase. " << endl;
cout << "\nType U for uppercase and l for lowercase. ";
cin >> response;
while(response != 'U' && response != 'l')
{
cerr << "\nInvalid input. ";
cin >> response;
}
for(unsigned int i=0; i<word.length(); i++)
{
if((response == 'U' && word[i]==toupper(word[i])))
{
same = true;
}
else if(response == 'U')
{
word[i]=toupper(word[i]);
}
else if((response == 'l' && word[i]==tolower(word[i])))
{
same = true;
}
else if(response == 'l')
{
word[i]=tolower(word[i]);
}
}
cout << endl;
if(same)
{
cout << "\nBased on your response, this word has already been converted. ";
}
else
cout << "\nyour newly converted or unconverted word is : " << word;
cout << endl;
}
Ваш вопрос остается неясным. Что вы ожидаете от ввода и вывода? Что вы сейчас получаете? –
Я уже дал вам пример в описании, но здесь он снова. Если пользователь вводит строку слов, и пользователь только хочет преобразовать букву S в строку слова в верхний регистр, вывод должен быть строкой. Выход, который я получаю, - STRING. – ChronoTrigger
Не делайте слово [i] = toupper (слово [i]); в петле. Скорее просто слово [0] = toupper (слово [0]); вне цикла. –