powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / cin не срабатывает и получается infinite loop
11 сообщений из 11, страница 1 из 1
cin не срабатывает и получается infinite loop
    #39710110
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
#include <iostream>
#include <string>

using namespace std;

enum mall {parking = -1, hall, shops, roof}; // этажи

int main()
{
    short floor;
    bool exit;
    while (!exit)
    {
        floor = -10; // попытка обнулять не помогает...
        cout << "Enter your floor (from -1 to 2) or 'q': \n";
        cin >> floor; // почему, если тут ввести char ('q'), то больше cin никогда не сработает, а будет бесконечный цикл-спам ?
        cout << "Вы ввели: " << floor << ".\n";

        switch (floor)
        {
//          case 'q':           exit = 1;                       break; // это отказывается работать, кидает в бесконечный цикл
            case parking:       cout << "This is parking\n";    break;
            case hall:          cout << "This is hall\n";       break;
            case shops:         cout << "This is shops\n";      break;
            case roof:          cout << "This is roof\n";       break;
            default:            cout << "This is WTF?!\n";      break;
        }
    }

    cin.get();
    return 0;
}


вот такой спам, если 'q' ввести:
авторEnter your floor (from -1 to 2) or 'q':
Вы ввели: -10.
This is WTF?!
Enter your floor (from -1 to 2) or 'q':
Вы ввели: -10.
This is WTF?!
Enter your floor (from -1 to 2) or 'q':
Вы ввели: -10.
This is WTF?!
Enter your floor (from -1 to 2) or 'q':
Вы ввели: -10.
This is WTF?!
Enter your floor (from -1 to 2) or 'q':
Вы ввели: -10.^C
я понимаю, что в short попал char, но он его записывает, как 0, а потом там же всё равно -10 прописывается
я не понимаю его поведения такого...
...
Рейтинг: 0 / 0
cin не срабатывает и получается infinite loop
    #39710129
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
cin >> floor; // почему, если тут ввести char ('q'), то больше cin никогда не сработает, а будет бесконечный цикл-спам ?
if (cin.fail())
{
	cin.clear();
	char c;
	cin >> c;
}
...
...
Рейтинг: 0 / 0
cin не срабатывает и получается infinite loop
    #39710943
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Невозможно в переменную short ввести char('q').

Ты должен либо вводить тоже число, либо
изменить программу так, чтобы вводить символьную строку и затем, если она не 'q', преобразовывать её в число.
...
Рейтинг: 0 / 0
cin не срабатывает и получается infinite loop
    #39733231
skibidi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так а зачем здесь нужен short? Ты пытаешься оптимизировать код?
...
Рейтинг: 0 / 0
cin не срабатывает и получается infinite loop
    #39735074
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
Код: plaintext
1.
2.
3.
4.
...
    short floor;
    bool exit;
...


...я не понимаю его поведения такого...

после этих строчек код можно не смотреть.
Результат под релизом НЕ определён.

учите матчасть
(круглый)
...
Рейтинг: 0 / 0
cin не срабатывает и получается infinite loop
    #39735206
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skibidiТак а зачем здесь нужен short? Ты пытаешься оптимизировать код?
я учусь

в short нельзя char загонять - понятно
вообще хз, о чём я думал
...
Рейтинг: 0 / 0
cin не срабатывает и получается infinite loop
    #39735283
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

еще переменная exit у тебя не инициализирована,
Код: plaintext
1.
2.
3.
    bool exit;
    while (!exit)
    {


- фигня будет, если в exit окажется что-то, отличное от нуля.
Вообще, сообщения компилятор должен был выдать.
...
Рейтинг: 0 / 0
cin не срабатывает и получается infinite loop
    #39735303
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
он же дефолтно ставит false
...
Рейтинг: 0 / 0
cin не срабатывает и получается infinite loop
    #39735325
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухон же дефолтно ставит false
С чего бы?
...
Рейтинг: 0 / 0
cin не срабатывает и получается infinite loop
    #39735351
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а блин, походу это в Go только
...
Рейтинг: 0 / 0
cin не срабатывает и получается infinite loop
    #39735356
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skibidiТак а зачем здесь нужен short? Ты пытаешься оптимизировать код?
да все очевидно - если short - это короткие, маленькие буквы, строчные

а вот если писать cin >> (long), то это для длинных - заглавных!... =)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / cin не срабатывает и получается infinite loop
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]