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

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

Войти
Регистрация
Восстановить пароль
 
reisal78
 Аватар для reisal78
610 / 523 / 121
Регистрация: 28.04.2013
Сообщений: 1,480
#1

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

19.08.2013, 21:20. Просмотров 683. Ответов 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;
}
если пользователь ошибется, и в количестве введет (ну случайно, всякое же бывает) вместо целого числа, число с плавающей запятой, то в программе происходит сбой и запрос стоимости уже не производится.

Почему это происходит? Как с этим бороться?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2013, 21:20     ввод данных cin >>
Посмотрите здесь:

C++ Cin - ввод значения по умолчанию
C++ Почему не происходит ввод? (cin)
Корректный ввод с cin C++
Ввод через cin нескольких чисел C++
Ввод cin C++
cin читает прежний ввод C++
C++ Ввод только чисел в cin>>value
Std:cin ввод нескольких значений C++
Ввод данных в структуру - cin.getline C++
Игнорирует ввод cin C++
C++ Ввод с cin с пробелами
C++ Ввод текста по cin

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lowercase
 Аватар для lowercase
212 / 201 / 34
Регистрация: 09.05.2012
Сообщений: 494
19.08.2013, 21:26     ввод данных cin >> #2
Цитата Сообщение от reisal78 Посмотреть сообщение
Почему это происходит?
потому что в переменную типа int пытаетесь запихнуть вещественное число. целые числа не подразумевают наличе десятичной точки, или каких-то других символов, кроме цифр или знака числа(и тот первым идти должен)
Цитата Сообщение от reisal78 Посмотреть сообщение
Как с этим бороться?
один из возможных вариантов - считывать строку и с ней уже разбиратся
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,597
Завершенные тесты: 1
19.08.2013, 21:28     ввод данных cin >> #3
При вводе целого числа любой нецифровой символ явлается ограничителем
(в т.ч. и точка).
В результате в переменную qt записывается целая часть (до точки).
А дробная часть (после точки) записывается в cost.
Ded_Vasilij
 Аватар для Ded_Vasilij
231 / 213 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
19.08.2013, 21:29     ввод данных cin >> #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();
reisal78
 Аватар для reisal78
610 / 523 / 121
Регистрация: 28.04.2013
Сообщений: 1,480
19.08.2013, 21:35  [ТС]     ввод данных cin >> #5
Ага, воде становится понятным... если я в количество ввожу дробное число (например 32.5), то целая часть запишется в переменную qt станет равно 32, а дробная часть уйдет в переменную cost, и ее значение станет 0.5.
Поэтому, 2й cin и не срабатывает...
Yandex
Объявления
19.08.2013, 21:35     ввод данных cin >>
Ответ Создать тему
Опции темы

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