Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
reisal78
688 / 600 / 140
Регистрация: 28.04.2013
Сообщений: 1,708
#1

ввод данных cin >> - C++

19.08.2013, 21:20. Просмотров 856. Ответов 4
Метки нет (Все метки)

Приветствую!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
 
int main()
{setlocale (LC_ALL,"");
int qt;
float cost;
 
cout << "Введите количество: "; cin >> qt;
cout << "Введите стоимость: "; cin >> cost;
 
return 0;
}
если пользователь ошибется, и в количестве введет (ну случайно, всякое же бывает) вместо целого числа, число с плавающей запятой, то в программе происходит сбой и запрос стоимости уже не производится.

Почему это происходит? Как с этим бороться?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2013, 21:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ввод данных cin >> (C++):

Ввод данных используя цикл while (cin >> ) - C++
Здравствуйте, не могу разобрать, как работает одна из инструкций данной программы. Строка с циклом while ( inFile &gt;&gt; str1 ) В данном...

Ввод данных используя цикл while (cin >> ) - C++
Здравствуйте, не могу разобрать, как работает одна из инструкций данной программы. Строка с циклом while ( inFile &gt;&gt; str1 ) В данном...

Ввод данных в структуру - cin.getline - C++
Добрый день, Задача загрузить информацию в структуку Songs (автор, имя, год) . Однако когда в цикле for запрашиваю данные, первый...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync - C++
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get() !=...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear() - C++
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не изучал, поэтому возникали некоторые проблемы....

Ввод cin - C++
Я тут раньше задавал подобный вопрос, то тема умерла, по ходу. Здесь приведен листинг функции ввода калькулятора из книги Страуструпа. ...

4
lowercase
212 / 201 / 34
Регистрация: 09.05.2012
Сообщений: 494
19.08.2013, 21:26 #2
Цитата Сообщение от reisal78 Посмотреть сообщение
Почему это происходит?
потому что в переменную типа int пытаетесь запихнуть вещественное число. целые числа не подразумевают наличе десятичной точки, или каких-то других символов, кроме цифр или знака числа(и тот первым идти должен)
Цитата Сообщение от reisal78 Посмотреть сообщение
Как с этим бороться?
один из возможных вариантов - считывать строку и с ней уже разбиратся
0
zss
Модератор
Эксперт С++
6634 / 6196 / 2051
Регистрация: 18.12.2011
Сообщений: 16,155
Завершенные тесты: 1
19.08.2013, 21:28 #3
При вводе целого числа любой нецифровой символ явлается ограничителем
(в т.ч. и точка).
В результате в переменную qt записывается целая часть (до точки).
А дробная часть (после точки) записывается в cost.
1
Ded_Vasilij
231 / 213 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
19.08.2013, 21:29 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int Readint()
{
    unsigned int a;
    cin >> a;
    if (!cin)
    {
        cin.clear();
        while (cin.peek() !='\n')
            cin.ignore();
        cin.ignore();
    }
    return a;
}
можно так
пишем
C++
1
qt = Readint();
1
reisal78
688 / 600 / 140
Регистрация: 28.04.2013
Сообщений: 1,708
19.08.2013, 21:35  [ТС] #5
Ага, воде становится понятным... если я в количество ввожу дробное число (например 32.5), то целая часть запишется в переменную qt станет равно 32, а дробная часть уйдет в переменную cost, и ее значение станет 0.5.
Поэтому, 2й cin и не срабатывает...
0
19.08.2013, 21:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2013, 21:35
Привет! Вот еще темы с ответами:

Игнорирует ввод cin - C++
Не могу понять почему не считывает переменную 'q' в 13 строке. Программа просто обходит её стороной. #include &lt;iostream&gt; #include...

Ввод с cin с пробелами - C++
Здравствуйте! Делаю стандартное задание по структурам. Пока сделано только добавление и показ всего. Но вот проблемка. Если название...

Корректный ввод с cin - C++
Пусть в программе есть оператор cin &gt;&gt; n, где n типа int, а пользователь вводит набор символов Как отследить это, не выдавая ошибку, и не...

Ввод текста по cin - C++
Доброго времени суток. имею следующий код: OpenAsper oAsper; cin&gt;&gt;pathS; path = new char ; strcpy( path, pathS.c_str() ); ...


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

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

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