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

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

Войти
Регистрация
Восстановить пароль
 
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
#1

Ввод значения целочисленной переменной из консоли - C++

17.11.2012, 19:34. Просмотров 598. Ответов 6
Метки нет (Все метки)

Доброго времени суток.
Вот проблемная часть кода:
C++
1
2
3
4
5
6
7
...
setlocale(LC_ALL, "Russian");
int a;
cin >> a;
if('\n' == a)
   break;
...
Проблема следующая:
если на вход подавать символ, то в a попадает несоответствующий ему код (например при вводе 'e'(англ.) вводиться символ перевёрнутого значка логического отрицания).
Подскажите, как это исправить. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pavell
14 / 14 / 0
Регистрация: 13.11.2012
Сообщений: 28
17.11.2012, 19:57     Ввод значения целочисленной переменной из консоли #2
не совсем понятно, а вы объявили как int и вводите символы???
и if у вас странный, может все же
C++
1
if (a == '\n' )
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
17.11.2012, 20:22  [ТС]     Ввод значения целочисленной переменной из консоли #3
if правильный(результат в обоих случаях будет один и тот же). Тип же int поставил потому, что нужно обрабатывать кроме символов и числа > 255 (char, и int целочисленные), но если это и явл. проблемой, то именно почему я и хочу узнать.
Pavell
14 / 14 / 0
Регистрация: 13.11.2012
Сообщений: 28
17.11.2012, 20:30     Ввод значения целочисленной переменной из консоли #4
с if вы правы, попутал с присвоением.

cin и cout "смотрит" тип переменной в которую он передает или от которой получает значение, по этой причине вряд ли получится передать переменной типа int значение символа (char) отсюда и ошибка имхо.

Как вариант можно считывать в массив char
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.11.2012, 21:01     Ввод значения целочисленной переменной из консоли #5
Цитата Сообщение от PG94 Посмотреть сообщение
если на вход подавать символ, то в a попадает несоответствующий ему код (например при вводе 'e'(англ.) вводиться символ перевёрнутого значка логического отрицания).
Это как вы определили? Если cin >> должен считать введённое значение в переменную типа int, то он будет ждать цифру. Если первым символом будет не цифра (или не + -), то cin >> вообще ничего не считает в переменную и установит флаг ошибки, после этого поток ввода вообще не будет работать. В переменной останется то, что было до этого, а если она неинициализированна, как у вас, то мусор.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 540
17.11.2012, 21:18     Ввод значения целочисленной переменной из консоли #6
Если стоит break; то я думаю, что вы это дело выполняете в цикле и хотите, чтобы пользователь вводил значение переменной до нажатия "энтер" ?
Тогда вам придется отлавливать каждый вводимый символ.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2012, 21:26     Ввод значения целочисленной переменной из консоли
Еще ссылки по теме:

Ввод в консоли C++
C++ Объявление целочисленной переменной с именем var_i
C++ потоковый ввод с консоли
Запомнить введенное значение в целочисленной переменной C++
C++ Безопасный ввод с консоли

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12510 / 7072 / 794
Регистрация: 27.09.2012
Сообщений: 17,466
Записей в блоге: 2
Завершенные тесты: 1
17.11.2012, 21:26     Ввод значения целочисленной переменной из консоли #7
Считывайте всё в строку и разбирайте уже строку.
Yandex
Объявления
17.11.2012, 21:26     Ввод значения целочисленной переменной из консоли
Ответ Создать тему
Опции темы

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