Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 338
#1

Цикл не прерывается при вводе Enter - C++

27.05.2014, 10:16. Просмотров 1245. Ответов 34
Метки нет (Все метки)

Хотелось бы узнать почему цикл while не прерывается при введение enter. Переписал код всеми доступными мне способами. вроде бы нет ошибок но не работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <conio.h>
#include <vector>
int main()
{
    setlocale( LC_ALL, "Russian");
    std::vector<int> num;
    int a;
    char s = '\n';
std::cout << "Введите несколько чисел: \n";
while(std::cin >> a && a != s)
a % 2 != 0 ? num.push_back(a): num.push_back(a*2);
for(int r = 0; r < num.size(); r++)
    std::cout << r << " Элемент вектора: " << num[r] << std::endl;
_getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2014, 10:16     Цикл не прерывается при вводе Enter
Посмотрите здесь:
Как остановить цикл при вводе enter? C++
Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл? C++
C++ Ошибка с массивом: программа при вводе "ступорится" при нажатии клавиши Enter
Как сделать, чтобы при вводе в консоли <Enter> не переводил курсор на начало следующей строки? C++
Завершить игровой цикл при вводе нуля C++
C++ Бесконечный цикл при вводе несоответствующего типа данных
Завершить цикл при вводе значения первой переменной C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,186
Завершенные тесты: 1
27.05.2014, 17:07     Цикл не прерывается при вводе Enter #16
Цитата Сообщение от Altair42 Посмотреть сообщение
Эта программа при нажатие энтер выходит из цикла.
Да не выходит же!
Посмотрите в отладчике!
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,064
Записей в блоге: 3
Завершенные тесты: 1
27.05.2014, 17:10     Цикл не прерывается при вводе Enter #17
Цитата Сообщение от Altair42 Посмотреть сообщение
Эта программа при нажатие энтер выходит из цикла.
при вводе 10 вышел
Цикл не прерывается при вводе Enter
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,064
Записей в блоге: 3
Завершенные тесты: 1
27.05.2014, 17:11     Цикл не прерывается при вводе Enter #18
Цитата Сообщение от Altair42 Посмотреть сообщение
в второй программе выход из цикла по нажатию энтер , при вводе 10 и при вводе любого символа.
на Вашем скриншоте ожидается ввод числа в std::cin>>a
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 338
27.05.2014, 17:21  [ТС]     Цикл не прерывается при вводе Enter #19
Еще раз спасибо всем что помогли. Я не программировал раньше. По этому не всегда могу понят что к чему. Спасибо за терпение!

Добавлено через 2 минуты
В школе на стaром IBM (не было не какой (или привычной) оперативки все запускали с дискет) рисовали линии и кружочки Изучили от силы 5 слов на языке бейзик.
НовыйНовичок
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 82
20.02.2016, 10:06     Цикл не прерывается при вводе Enter #20
У меня похожая проблема и хочу ещё уточнить, почему не выходит из цикла при нажатии символа 'c'?
C++
1
2
3
4
5
6
char otvet = 'a';
while(otvet != 'c')
{
cout << " Для выхода введите символ 'c'\n";
cin >> otvet;
}
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,064
Записей в блоге: 3
Завершенные тесты: 1
20.02.2016, 10:20     Цикл не прерывается при вводе Enter #21
НовыйНовичок, ентер нажали?
НовыйНовичок
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 82
20.02.2016, 10:44     Цикл не прерывается при вводе Enter #22
Да нажимал, но и если сразу после 'c' нажать ctrl+z, тоже ведь не выходит.
Если это намек, то у меня мысли что может это из-за символа конца строки есть, но как это сделать, грамотно, такой цикл. Т.е. тут символ, а там строка.
nd2
2130 / 1702 / 601
Регистрация: 29.01.2016
Сообщений: 5,489
20.02.2016, 12:26     Цикл не прерывается при вводе Enter #23
Английский символ 'c' вводишь?
НовыйНовичок
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 82
20.02.2016, 15:12     Цикл не прерывается при вводе Enter #24
Это тоже проверил, пробовал и то, и то.
nd2
2130 / 1702 / 601
Регистрация: 29.01.2016
Сообщений: 5,489
20.02.2016, 17:19     Цикл не прерывается при вводе Enter #25
Цитата Сообщение от НовыйНовичок Посмотреть сообщение
Это тоже проверил, пробовал и то, и то.
В программировании чудес не бывает. Весь код покажи. Среда какая?
НовыйНовичок
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 82
21.02.2016, 20:58     Цикл не прерывается при вводе Enter #26
Использую, MSVS2010.
В начале только написано еще setlocale(LC_ALL, "Russian" ); и соответствующий include включен. Это весь код.
nd2
2130 / 1702 / 601
Регистрация: 29.01.2016
Сообщений: 5,489
21.02.2016, 21:50     Цикл не прерывается при вводе Enter #27
Цитата Сообщение от НовыйНовичок Посмотреть сообщение
Использую, MSVS2010.
Тебе показать, что это код (20 пост) в 10-й студии работает, или не надо?
НовыйНовичок
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 82
21.02.2016, 22:40     Цикл не прерывается при вводе Enter #28
Если он рабоотает, именно в таком виде, тогда пока не надо, после праздников, я выложу скриншот, где он не работает.
НовыйНовичок
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 82
24.02.2016, 10:27     Цикл не прерывается при вводе Enter #29
Ещё раз код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <locale>
 
using namespace std;
 
int main()
{   
    setlocale(LC_ALL, "Russian");
    char otvet = 'б';
    while(otvet != 'с')
    {   
        cout << "Введите символ 'с' для выхода\n";
        cin >> otvet;
    }
    return 0;
}
Скрин во вложении.
Миниатюры
Цикл не прерывается при вводе Enter  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2016, 10:55     Цикл не прерывается при вводе Enter
Еще ссылки по теме:
C++ Цикл for на 5 итераций прерывается после 1-ой, 2-ой или 3-ей
После первого scanf выводятся сразу все оставшиеся printf и цикл прерывается C++
c++ завершить цикл клавишей <Enter> C++

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

Или воспользуйтесь поиском по форуму:
nd2
2130 / 1702 / 601
Регистрация: 29.01.2016
Сообщений: 5,489
24.02.2016, 10:55     Цикл не прерывается при вводе Enter #30
Угу, символы русские, а русского ввода в коде нет. На английские символы замени, или сделай русский ввод в коде, например, так:
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console.

Добавлено через 2 минуты
Цитата Сообщение от НовыйНовичок Посмотреть сообщение
Это тоже проверил, пробовал и то, и то.
Сказки, с английскими символами всё будет работать.
Yandex
Объявления
24.02.2016, 10:55     Цикл не прерывается при вводе Enter
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru