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

Как ведет себя cin, если пользователь вводит некорректные данные? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ крестики нолики, нужен мозг http://www.cyberforum.ru/cpp-beginners/thread724353.html
1) выберите пункт меню - "Game", нажмите Enter, а потом нажмите стрелочки вверх, вниз и вылазит меню :( почему и как решить эту проблему? 2) помогите с ходами компьютера и проверкой на победу ...
C++ Преобразование значения переменной (long) через функцию в значения структуры Я недавно начал заниматься С++ и программированием в целом. Вот у меня такая проблема. В этой программе не работает часть, когда вводишь кол-во секунд, а с помощью функции time... http://www.cyberforum.ru/cpp-beginners/thread724344.html
C++ Смысл картинки и рекурсия изнутри
http://s018.***********/i522/1212/0b/704b04ecd185t.jpg как происходит рекурсия изнутри, что это вообще картинка показывает ?
И снова массивы (найти максимальный элемент, определить среднее арифметическое) C++
Задано 2 целочисленных массива X(n) и Z(k). В каждом массиве найти максимальный элемент массива,и если это простое число-удалить все элементы,равные максимальному значению.Определить среднее...
C++ Решение интеграла (необходимо немного изменить код) http://www.cyberforum.ru/cpp-beginners/thread724315.html
есть код, как я думал правильный (он компилируется без ошибок)! Но в итоге выдает решение интеграла равно 0, что я думаю не есть правильно, поэтому прошу помочь разобраться в ошибке. вот сам...
C++ С++. Объектно-ориентированная технология программирования. Обработка матрицы с использованием иерархии классов Характеристикой строки целочисленной матрицы называется сумма ее положительных четных элементов. Переставляя строки заданной матрицы,расположить их в соответствии с ростом характеристик. Препод... подробнее

Показать сообщение отдельно
Zzaponka
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 12

Как ведет себя cin, если пользователь вводит некорректные данные? - C++

09.12.2012, 02:39. Просмотров 438. Ответов 2
Метки (Все метки)

Читаю C++ Primer Plus by Stephen Prata. В седьмой главе у него есть следующий пример.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// lotto.cpp -- probability of winning
#include <iostream>
// Note: some implementations require double instead of long double
long double probability(unsigned numbers, unsigned picks);
int main()
{
    using namespace std;
    double total, choices;
    cout << "Enter the total number of choices on the game card and\n"
            "the number of picks allowed:\n";
    while ((cin >> total >> choices) && choices <= total)
    {
        cout << "You have one chance in ";
        cout << probability(total, choices);      // compute the odds
        cout << " of winning.\n";
        cout << "Next two numbers (q to quit): ";
    }
    cout << "bye\n";
    // cin.get();
    // cin.get();
    return 0;
}
 
// the following function calculates the probability of picking picks
// numbers correctly from numbers choices
long double probability(unsigned numbers, unsigned picks)
{
    long double result = 1.0;  // here come some local variables
    long double n;
    unsigned p;
 
    for (n = numbers, p = picks; p > 0; n--, p--)
        result = result * n / p ; 
    return result;
}
Условием выхода из программы есть введение символа 'q' на запрос.

С другой стороны, в тексте программы я нигде не вижу явной проверки на равенство какой-либо переменной или результата вызова какой-либо функции на равенство этому самому 'q' (проверяется только choices <= total).

Далее, если откомпилировать исходик и запустить программу, то становится ясно, что программа выходит, если вы вводите не цифры. Создав простенький пример, в котором пользователю предлагается ввести значение типа int, а он вводит какую-нибудь белиберду, и после этой самой белиберды вывести значение переменной, то оно будет равным нулю.

Собственно, после этих многабукаф(тм) сам вопрос: расскажите (или ткните, где можно прочитать) поподробнее про поведение всех этих объектов и методов класса iostream? То есть, какие сведения о них могут гарантировать, что вышеприведенная программа будет работать именно таким образом? Прата после разбора исходного текста (по крайней мере, в этом месте) об этом не упоминает...

Thanks in advance, как говорится... =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru