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

Защита от некорректного ввода - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ задача http://www.cyberforum.ru/cpp-beginners/thread420326.html
имеется информация по итогам экзаменов в институте всего в списке N человек. По каждому из студентов имеются следующие сведения: фамилия,оценка по математике,оценка по информатике и оценка по физике. Ввести информацию об экзаменах и напечатать количество и фамилии студентов,которые сдавали экзамены только с одной четверкой помогите ее решить
C++ Задачка на ввод вывод. Файл/не файл.с++ Условие: Напишите прогу, которая бы считывала с символы с клавиатуры и выводила бы их на экран. Когда нажимается ^A (CTRL+A), программа должна правильно закрываться. Правильное закрытие это появление надписи "CTRL + A это корректное окончание работы программы". Дополнение: getchar () считывает и putchar () записывает тип int. После этого дополните программу таким образом, чтобы аутпут... http://www.cyberforum.ru/cpp-beginners/thread420315.html
C++ Дана функция y=3^x
Нужна помощь в решение
Калькулятор шестнадцатеричных чисел C++
Помогите пожалуйста!как в си/с++ сделать калькулятор для арифметических действий над шестнадцатеричными числами,а также с операциями "не равно" и "больше,либо равно"
C++ Ветвления http://www.cyberforum.ru/cpp-beginners/thread420258.html
Помогите решить данную задачу.У меня она расчитывает только 1вое выражение.
C++ Напечатать слова в предложении в алфавитном порядке Не запускается, выдает ошибку. Посмотрите, помогите чем сможете.....и вообще она правильно ли написана??? вот задание на эту прогу Напечатать слова предложения в алфавитном порядке. #include "stdafx.h" #include <iostream> #include <map> #include<conio.h> #include <math.h> подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2800 / 1576 / 246
Регистрация: 03.05.2010
Сообщений: 3,658
29.12.2011, 16:38     Защита от некорректного ввода
Цитата Сообщение от OstapBender Посмотреть сообщение
гигантское число пропускает
Ну, вообще-то бесконечное значение входит в тип float, так что это не противоречит условию.
Чтобы отсечь бесконечные значения можно так сделать:
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
/////////////////////////////////////////////////////////////////////////////////////////
//Написать защиту от дурака на ввод массива элементы которого тип float.
//Этот вариант не пропускает бесконечные значения.
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <limits>
#include <sstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
/////////////////////////////////////////////////////////////////////////////////////////
bool  successfully_input_not_inf_float(float&  fval)
{    
    T_str  s;
    std::cin >> s;
    std::istringstream  ssin(s);
    char  c;
    return      ssin >> fval
            &&  !(ssin >> c)
            &&  fval != std::numeric_limits<float>::infinity();
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{    
    float  f = 0;
    do
    {
        std::cout << "Enter number of type float: ";        
    }while( !successfully_input_not_inf_float(f) );
    std::cout << f
              << std::endl;
}
 
Текущее время: 00:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru