0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
1

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

27.05.2014, 10:16. Показов 8303. Ответов 36
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хотелось бы узнать почему цикл 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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2014, 10:16
Ответы с готовыми решениями:

Как остановить цикл при вводе enter?
#include &lt;iostream&gt; using namespace std; int main() { for (;;) { //как...

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt;...

При вводе части элемента при нажатии Enter сразу ввести весь элемент в Vusual Studio
Допустим ввел:Ran и нажал чтобы подставлялся класс Random. В VS 2019 это по умолчанию на одних...

Избавиться от Enter при вводе отдельного символа
помогите пж. надо чтобы каждый раз не вводить а нажимать клавишу. uses crt; var...

36
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
20.02.2016, 10:20 21
Author24 — интернет-сервис помощи студентам
НовыйНовичок, ентер нажали?
0
1 / 1 / 2
Регистрация: 10.11.2013
Сообщений: 126
20.02.2016, 10:44 22
Да нажимал, но и если сразу после 'c' нажать ctrl+z, тоже ведь не выходит.
Если это намек, то у меня мысли что может это из-за символа конца строки есть, но как это сделать, грамотно, такой цикл. Т.е. тут символ, а там строка.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
20.02.2016, 12:26 23
Английский символ 'c' вводишь?
0
1 / 1 / 2
Регистрация: 10.11.2013
Сообщений: 126
20.02.2016, 15:12 24
Это тоже проверил, пробовал и то, и то.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
20.02.2016, 17:19 25
Цитата Сообщение от НовыйНовичок Посмотреть сообщение
Это тоже проверил, пробовал и то, и то.
В программировании чудес не бывает. Весь код покажи. Среда какая?
0
1 / 1 / 2
Регистрация: 10.11.2013
Сообщений: 126
21.02.2016, 20:58 26
Использую, MSVS2010.
В начале только написано еще setlocale(LC_ALL, "Russian" ); и соответствующий include включен. Это весь код.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
21.02.2016, 21:50 27
Цитата Сообщение от НовыйНовичок Посмотреть сообщение
Использую, MSVS2010.
Тебе показать, что это код (20 пост) в 10-й студии работает, или не надо?
0
1 / 1 / 2
Регистрация: 10.11.2013
Сообщений: 126
21.02.2016, 22:40 28
Если он рабоотает, именно в таком виде, тогда пока не надо, после праздников, я выложу скриншот, где он не работает.
0
1 / 1 / 2
Регистрация: 10.11.2013
Сообщений: 126
24.02.2016, 10:27 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  
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
24.02.2016, 10:55 30
Угу, символы русские, а русского ввода в коде нет. На английские символы замени, или сделай русский ввод в коде, например, так:
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console.

Добавлено через 2 минуты
Цитата Сообщение от НовыйНовичок Посмотреть сообщение
Это тоже проверил, пробовал и то, и то.
Сказки, с английскими символами всё будет работать.
1
1 / 1 / 2
Регистрация: 10.11.2013
Сообщений: 126
24.02.2016, 11:26 31
Ок,спасибо, да с англ. работает! Только я не понял как он воспринимает тогда эти русские символы, какие числа в соответсвие ставит?

Добавлено через 2 минуты
Сказки, с английскими символами всё будет работать.
по-поводу
Я имел ввиду, что проверял только на неравенство русскому символу, но на случай, если там английский в условии у меня вдруг случайно попал,но случайно не попал, пробовал ввести тоже англ.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
24.02.2016, 11:30 32
Цитата Сообщение от НовыйНовичок Посмотреть сообщение
Только я не понял как он воспринимает тогда эти русские символы, какие числа в соответсвие ставит?
Выведи, приводя к int, и посмотри (только объяви otvet как unsigned char, а то отрицательны числа могут быть). В консоли windows другая кодировка (866), не та что в коде (1251), поэтому и получается несовпадение.
0
1 / 1 / 2
Регистрация: 10.11.2013
Сообщений: 126
24.02.2016, 11:31 33
Кто может объяснить подробно как воспринимается русский символ 'п' или 'л' или 'c' на скриншоте, какой у них числовой код, а какой код идёт на консоль, когда я меняю язык и ставлю русский символ?

Добавлено через 1 минуту
Ок, не спел спросить, это и хотел спросить, теперь всё ясно, спасибо еще раз!
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
24.02.2016, 11:39 34
Цитата Сообщение от НовыйНовичок Посмотреть сообщение
Я имел ввиду, что проверял только на неравенство русскому символу, но на случай, если там английский в условии у меня вдруг случайно попал,но случайно не попал, пробовал ввести тоже англ.
Сейчас посмотрел: в коде, в 20 посте, у тебя английские символы стоят, поэтому непонятно, как и что ты пробовал. Может не знал, что там английские стоят? Для таких проб не нужно выбирать символы, которые одинаково выглядят в двух языках.
0
1 / 1 / 2
Регистрация: 10.11.2013
Сообщений: 126
24.02.2016, 21:16 35
Нет я код для форума написал, сам от руки, а не скопипастил, так как на компе для упражнений закрыты usb-порты. ))
0
0 / 0 / 1
Регистрация: 18.02.2018
Сообщений: 112
19.02.2018, 17:28 36
А как написать кантрл + Z, подскажите пожалуйста
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
19.02.2018, 17:47 37
Цитата Сообщение от msz301005 Посмотреть сообщение
А как написать кантрл + Z, подскажите пожалуйста
Когда курсор в начале новой строки, нажимаешь Ctrl + Z, потом Enter.
0
19.02.2018, 17:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2018, 17:47
Помогаю со студенческими работами здесь

При вводе числа в строке и нажатии ENTER выдать значение YES
Добрый вечер! Мне на завтра задали написать задачу на Паскале. Помогите решить, пожалуйста! ...

Почему последний Enter при вводе строки отбрасывается (getchar)?
Родскажите, почему последний энтер при вводе строки отбрасывается? 1. ch получает введенную...

Как сделать, чтоб при вводе пароль в edit и нажатии enter, форма закрывалась?
Как сделать чтоб при вводе пароль в edit и нажатии enter, форма закрывалась?

Ошибка с массивом: программа при вводе "ступорится" при нажатии клавиши Enter
Задание: Напишите программу, используя указатели, которая вычисляет адреса чётных элементов...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Опции темы

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