Помогите написать программу на c++ и объясните мне - Вопросы по С+

Вопрос Помогите написать программу на c++ и объясните мне

Регистрация
1 Окт 2013
Сообщения
81
Репутация
-3
Спасибо
1
Монет
0
Написать функцию vowel_count(), которая принимает строку в качестве параметра и возвращает количество гласных букв в этой строке что бы русские слова были.
 
Регистрация
27 Июн 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
#include <iostream>
#include <string>
#include <locale>

int vowel_count(const std::string& str) {
std::locale loc("ru_RU.UTF-8");
int count = 0;

for (char ch : str) {
if (std::isalpha(ch, loc)) {
char lowercaseCh = std::tolower(ch, loc);
if (lowercaseCh == 'а' || lowercaseCh == 'е' || lowercaseCh == 'ё' ||
lowercaseCh == 'и' || lowercaseCh == 'о' || lowercaseCh == 'у' ||
lowercaseCh == 'ы' || lowercaseCh == 'э' || lowercaseCh == 'ю' ||
lowercaseCh == 'я') {
count++;
}
}
}

return count;
}

int main() {
std::string input_str;
std::cout << "Введите строку: ";
std::getline(std::cin, input_str);

int vowels = vowel_count(input_str);
std::cout << "Количество гласных букв в строке: " << vowels << std::endl;

return 0;
}

Эта программа включает функцию vowel_count(), которая принимает строку в качестве параметра и использует стандартную библиотеку C++ для подсчета количества русских гласных букв в строке. Функция также учитывает регистр символов.

Для решения задачи используется стандартная библиотека locale для работы с русскими символами. Функция isalpha() проверяет, является ли символ буквой, а функция tolower() приводит символ к нижнему регистру перед сравнением с гласными буквами русского алфавита.

В функции main() пользователю предлагается ввести строку, после чего программа вызывает функцию vowel_count() и выводит количество гласных букв введенной строки.
 
Регистрация
23 Ноя 2012
Сообщения
89
Репутация
0
Спасибо
0
Монет
0
Вам уже неоднократно отвечали на этот вопрос.
Повторю еще раз, для тех, кто не понимает написанное с первого раза: чтобы анализировать строки на русском вам необходимо знать кодировку, которая использовалась для представления русского языка.
 
Регистрация
11 Окт 2013
Сообщения
85
Репутация
-7
Спасибо
0
Монет
0
#include
#include

bool isVowel(wchar_t ch) {
std::wstring vowels = L"аеёиоуыэюя";
ch = towlower(ch);
return vowels.find(ch) != std::wstring::npos;
}

int countVowels(const std::wstring& str) {
int vowelCount = 0;
for (wchar_t ch : str) {
if (isVowel(ch)) {
vowelCount++;
}
}
return vowelCount;
}

int main() {
setlocale(LC_ALL, "en_US.UTF-8");
std::wcout
 
Регистрация
26 Авг 2013
Сообщения
60
Репутация
0
Спасибо
0
Монет
0
Пробуйте... #include
#include
#include

bool is_vowel(const wchar_t ch) {
std::wstring vowels = L"аеёиоуыэюяaeiouy";
return vowels.find(towlower(ch)) != std::wstring::npos;
}

int vowel_count(const std::wstring& line) {
auto vowels = 0;
for (auto ch : line) if (is_vowel(ch)) ++vowels;
return vowels;
}

int main() {
setlocale(LC_CTYPE, "en_US.UTF-8");
#ifdef _WIN32
std::wcin.imbue(std::locale(".866"));
std::wcout.imbue(std::locale(".65001"));
#endif
std::wcout
 
Сверху Снизу