Доброго времени суток. Есть следующая задача: С клавиатуры вводится текстовая строка. Разработать программу, которая реализует указанные действия. а) подсчитывает количество слов в тексте, которые заканчиваются на гласную букву; б) выводит на экран все слова, длина которых меньше пяти символов; в) удаляет все слова, которые содержат хотя бы одну латинскую букву. Ниже представлен мой код, в котором не работает только первый пункт задания. И я не могу понять почему/зачем он не хочет работать. Прошу помощи)
#include <iostream>
#include <sstream>
#include <string>
#include <stdlib.h>
#include <vector>
#include <locale.h>
#include <windows.h>
bool IsVowel(char c)
{
switch(c)
{
case 'e':
case 'y':
case 'u':
case 'i':
case 'o':
case 'a':
case 'у':
case 'ы':
case 'а':
case 'о':
case 'э':
case 'я':
case 'и':
case 'ю':
case 'ё':
case 'е':
return true;
default:
return false;
}
}
int main()
{
std::string str, word;
std::getline(std::cin, str);
char* lpBuff = new char[str.size() + 7];
OemToCharA(str.data(), lpBuff);
str = lpBuff;
std::istringstream iss(str);
int iVowel = 0;
std::vector<std::string> v;
std::string strwolatin = "";
while(!iss.eof())
{
iss >> word;
if(IsVowel(word[word.size()])) iVowel++;
if(word.size() < 5) v.push_back(word);
for(size_t i = 0; i < word.size(); i++)
{
if(word[i] >= 'a' && word[i] <= 'z') goto l1;
if(word[i] >= 'A' && word[i] <= 'Z') goto l1;
}
strwolatin += word + " ";
l1:;
}
std::cout << "The number of words in the text that end with a vowel letter: " << iVowel << std::endl;
std::cout << "All words that are less than 5 characters in length:" << std::endl;
for(size_t i = 0; i < v.size(); i++) std::cout << " " << v[i] << std::endl;
std::cout << "Text without words that have at least 1 Latin letter: " << strwolatin << std::endl;
return 0;
}
Возможно дело в кодировке русских букв.
Ваш файл с исходным кодом в юникоде (например) и строка вида case 'a':
вообще не имеет смысла, а с клавиатуры вводите в cp1251 (например).
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вопрос: нужно ли проверять типы T1, T2, T3 в конструкторе? Я так полагаю, что нужно, потому что этот конструктор запросто съедает, например, в качестве...
В общем, дело такое, есть класс окна, который хорошо себя показывает, обработка внутренних сообщений, отрисовки, ресайза, и тд
Здравствуйте! Есть задание вывести общий объём физической памяти и свободный объём физической памяти в МбИспользую структуру MEMORYSTATUS из библиотеки...
здравствуйте, не раз слышал фразу, что "после c++11 синглтон майерса стал потокобезопасным"