Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 17
1

Бесконечный цикл при чтении слов

20.05.2018, 15:20. Показов 1058. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Задача на картинке.

Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <cctype>
 
using namespace std;
 
int main()
{
    cout << "Enter words (q to quit): " << endl; 
    char ch[15];                                    //создать массив для слов
    int vowels = 0;                                 //счетчик гласных
    int consonants = 0;                             //счетчик согласных
    int others = 0;                                 //другое
    int g = 0;                                      //переменная для проверки завершения цикла
    while (g != 1)
    {
        for(int i = 0; i < 15; i++)                 //цикл для чтения слова для пробела
        {                                           //если встретил пробел - меняет его на нулевой символ
            cin.get(ch[i]);
            if (isspace(ch[i]))
                ch[i] = '\0';
                break;
        }
        if (isalpha(ch[0]))                         //операторы для определения гласных/согласных, если в массиве находятся "q\0"
        {                                           //завершает цикд
            if (ch[0] == 'q' && ch[1] == '\0')
            {
                g = 1;
                continue;
            }
            switch(ch[0])
            {
                case 'a':
                case 'A':
                case 'o':
                case 'O':
                case 'e':
                case 'E':
                case 'I':
                case 'i':
                case 'U':
                case 'u': vowels++;
                break;
                default: consonants++;
            }
        }
        else                                                        //если не буква
            others++;
    }
    cout << vowels << " words beginning with vowels.\n"             //выведение результатов
        << consonants << " words beginning with consonants.\n"
        << others << " others.\n";
    return 0;
}
при запуске идет бесконечный ввод, если ввожу q ничего не происходит. Как я понимаю, это из-за неправильной проверки:
C++
1
2
3
4
5
  if (ch[0] == 'q' && ch[1] == '\0')
            {
                g = 1;
                continue;
            }
но как это исправить и в чем проблема не понимаю. Помогите, пожалуйста
Миниатюры
Бесконечный цикл при чтении слов  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2018, 15:20
Ответы с готовыми решениями:

Почему цикл на при 1 уходит в бесконечный цикл?
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int...

Бесконечный цикл при исключениях
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;exception&gt; #include &lt;locale.h&gt; using namespace...

Бесконечный цикл c++ при значении 0.5
1) Здравствуйте, такая проблема что при значении dx = 0.5 цикл ничего не делает а только выводит...

Бесконечный цикл while при сумме ряда
При попытке посчитать сумму рядо с точностью до eps у меня цикл идет до бесконечности. В переменной...

3
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
20.05.2018, 16:12 2
Лучший ответ Сообщение было отмечено HasTig как решение

Решение

C++
1
2
3
4
5
6
7
for (int i = 0; i < 15; i++)
{
    cin.get(ch[i]);
    if (isspace(ch[i]))
        ch[i] = '\0';
    break; // <-- на первой итерации выйдет из цикла => считается всего 1 символ
}
1
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 17
20.05.2018, 17:58  [ТС] 3
Спасибо) взял на заметку эту ошибку
0
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
20.05.2018, 18:33 4
HasTig, эта же "ошибка" и приводит к тому, что больше 1 символа у тебя за проход do...while не считывалось, а посему и условие проверки 1 и 2 символов были нецелесообразны.
1
20.05.2018, 18:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2018, 18:33
Помогаю со студенческими работами здесь

Бесконечный цикл при вводе букв
Написал простую программку, в которой считается площадь, высота и диагонали параллелограмма. Через...

Бесконечный цикл при вводе букв
Почему если ввести в переменную управляющую циклом символ, при том ,что это переменная типа int,...

Бесконечный цикл при работе с бинарным деревом
Добрый вечер. Помогите разобраться на третьем обьекте в бинарном дереве ухожу в бесконечный цикл....

При вводе не числа, программа уходит в бесконечный цикл
Помогите исправить, даже не хнаю как исправить... Если написать не число, а букву допустим, так...

Бесконечный цикл при вводе несоответствующего типа данных
Цикл, который просит ввести пользователя число, если это число ни одно из чисел 1, 2 или 3, то цикл...

Программа уходит в бесконечный цикл при использовании while и cin
Суть такова, хочу добавлять строки в вектор пока пользователь не введет пустую сроку. Но после ее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru