Поиск гласных в предложении
Есть задача : Вам даны несколько строчек текста - и для каждой из них требуется подсчитать количество гласных (т.е. букв a, o, u, i, e, y). Входные данные - в первой строке указано количество строк подлежащих обработке. Дальше следуют сами строки, состоящие только из маленьких английских (латинских) букв и пробелов. Ответ должен содержать количество гласных для каждой строки.
Пример:
входные данные:
4
abracadabra
pear tree
o a kak ushakov lil vo kashu kakao
my pyx
ответ: 5 4 13 2
Написал код, немного рабочий, он может посчитать только количество гласных первой строки, а дальше не хочет, в чем проблема?
#include <iostream>
#include <string>
using namespace std;
int main() {
char words[6] = { 'a','o','u','i','e','y' };
string phrase;
int count = 0;
int n;
cin >> n;
getline(cin, phrase);
for (int i = 0; i < 6; i++) {
for (int j = 0; j < phrase.length(); j++) {
if (tolower(phrase[j]) == words[i]) count++;
}
}
cout << count << " ";
}
Ответы (2 шт):
cin >> n;
for(int i = 0; i < n; ++i)
{
getline(cin, phrase);
for (int i = 0; i < 6; i++) {
for (int j = 0; j < phrase.length(); j++) {
if (tolower(phrase[j]) == words[i]) count++;
}
}
cout << count << " ";
}
Возможно после cin нужно использовать cin.ignore(). Предлагаю cвой вариант:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
int n;
cout << "Input number of lines: ";
cin >> n;
cin.ignore();
char letters[256] = {0};
letters['a'] = 1;
letters['o'] = 1;
letters['u'] = 1;
letters['i'] = 1;
letters['e'] = 1;
letters['y'] = 1;
vector<int> numbers;
string phrase;
for (int i = 0; i < n; i++) {
int count = 0;
getline(std::cin, phrase);
for (char c: phrase) {
count += letters[c];
}
numbers.push_back(count);
}
for (int num: numbers) {
cout << num << " ";
}
cout << endl;
}