C ++ простая программа подсчета гласного ввода / вывода - PullRequest
1 голос
/ 08 февраля 2012
char ch;
//Get data from user 
cout << "Enter your sentence on one line followed by a # to end it: " << endl;

while (cin >> character && character != '#') 
{
    cin.get(ch); 
    ch = static_cast<char>(toupper(ch));
    outFile << ch;

    if (character == 'A' || character == 'E' || character == 'I' || character == 'O'
                || character == 'U')
    {
        vowelCount ++;

    }
}
outFile << "number of vowels: " << vowelCount << endl;

Я пытаюсь ввести предложение, прочитать, сколько гласных, пробелов и других символов в нем. Но vowelCount никогда не прав, и я не могу заставить его написать одно и то же предложение для выходного файла. Есть намеки?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Так же, как указывает комментарий pmr, проблема в том, что вы читаете по два символа с каждой итерацией цикла, а проверяете только первую.Оба эти утверждения потребляют символ из stdin:

cin >> character
...
cin.get(ch)

Все, что вам нужно сделать, это:

while (cin >> character && character != '#') 
{
    character = static_cast<char>(toupper(character));
0 голосов
/ 08 февраля 2012

Вы не показали объявление / инициализацию переменной vowelCount.Я предполагаю, что вы только объявили (и не инициализировали) это, используя выражение вроде:

int vowelCount; // notice the variable is not initialized.

В C ++ переменные int не имеют значения по умолчанию.Если вы написали такой код, вы можете исправить его, явно инициализировав его значение следующим выражением:

int vowelCount = 0;

Более того, ваши циклы читают 2 символа на каждой итерации (пропуская один из двух символов), и выотсутствуют гласные Y.

Исправленный пример будет выглядеть так:

//Get data from user 
cout << "Enter your sentence on one line followed by a # to end it: " << endl;

int vowelCount = 0;
while (cin >> character && character != '#') 
{
    character = toupper(character);

    if (character == 'A' || character == 'E' || character == 'I' || character == 'O'
                || character == 'U' || character == 'Y')
    {
        vowelCount ++;

    }
}
outFile << "number of vowels: " << vowelCount << endl;
...