C++ Подсчитайте количество гласных букв в веденной пользователем строке. Для подсчета используйте 4 способа
cpp
#include <iostream>
#include <string>
int countVowelsForLoop(const std::string& str) {
int count = 0;
for (int i = 0; i < str.length(); i++) {
char c = tolower(str[i]);
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
count++;
}
}
return count;
}
int main() {
std::string input;
std::cout << "Введите строку: ";
std::getline(std::cin, input);
int vowelsCount = countVowelsForLoop(input);
std::cout << "Количество гласных букв: " << vowelsCount << std::endl;
return 0;
}
В этом примере мы используем цикл `for`, чтобы пройти через каждый символ строки. Мы преобразуем символ в нижний регистр, используя `tolower`, чтобы считать любые гласные буквы вне зависимости от их регистра. Далее мы проверяем, является ли символ гласной буквой, и если да, увеличиваем счетчик на 1.
2. С использованием алгоритма `std::count_if`:
cpp
#include <iostream>
#include <string>
#include <algorithm>
bool isVowel(char c) {
c = tolower(c);
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}
int countVowelsCountIf(const std::string& str) {
return std::count_if(str.begin(), str.end(), isVowel);
}
int main() {
std::string input;
std::cout << "Введите строку: ";
std::getline(std::cin, input);
int vowelsCount = countVowelsCountIf(input);
std::cout << "Количество гласных букв: " << vowelsCount << std::endl;
return 0;
}
В этом примере мы определяем функцию `isVowel`, которая проверяет, является ли символ гласной буквой. Затем мы используем алгоритм `std::count_if`, чтобы подсчитать количество символов, для которых функция `isVowel` возвращает `true`.
3. С использованием регулярных выражений:
cpp
#include <iostream>
#include <string>
#include <regex>
int countVowelsRegex(const std::string& str) {
std::regex vowelsRegex("[aeiou]", std::regex_constants::icase);
return std::distance(std::regex_iterator(str.begin(), str.end(), vowelsRegex), std::regex_iterator<std::string::const_iterator>());
}
int main() {
std::string input;
std::cout << "Введите строку: ";
std::getline(std::cin, input);
int vowelsCount = countVowelsRegex(input);
std::cout << "Количество гласных букв: " << vowelsCount << std::endl;
return 0;
}
В этом примере мы создаем регулярное выражение, которое соответствует гласным буквам (буквам 'a', 'e', 'i', 'o', 'u') независимо от регистра (флаг `std::regex_constants::icase`). Затем мы используем `std::regex_iterator`, чтобы найти все совпадения регулярного выражения в строке, и подсчитываем количество с помощью `std::distance`.
4. С использованием стандартной функции `std::count` и контейнера `std::bitset`:
cpp
#include <iostream>
#include <string>
#include <bitset>
int countVowelsBitset(const std::string& str) {
std::bitset<256> vowels;
vowels['a'] = true;
vowels['e'] = true;
vowels['i'] = true;
vowels['o'] = true;
vowels['u'] = true;
int count = 0;
for (char c : str) {
if (vowels[std::tolower(c)]) {
count++;
}
}
return count;
}
int main() {
std::string input;
std::cout << "Введите строку: ";
std::getline(std::cin, input);
int vowelsCount = countVowelsBitset(input);
std::cout << "Количество гласных букв: " << vowelsCount << std::endl;
return 0;
}
В этом примере мы создаем `std::bitset`, где каждый индекс соответствует коду символа ASCII, и устанавливаем флаг `true` для гласных букв 'a', 'e', 'i', 'o', 'u'. Затем мы перебираем каждый символ в строке и проверяем, является ли символ гласной, используя индекс в `std::bitset`. Если да, увеличиваем счетчик на 1.
Каждый из этих способов имеет свои преимущества и недостатки. Выбор конкретного способа будет зависеть от требований вашей программы и предпочтений разработчика.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет