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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 67, средняя оценка - 4.66
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
#1

Проверить, является ли введенное значение числом или нет - C++

28.03.2010, 18:14. Просмотров 11937. Ответов 6
Метки нет (Все метки)

Здрасти. как проверить число на то, является ли оно им или нет. Пробовал с помощью cin.good(), и с ней все проверяется кроме одного: если ввести строку, где первая цифра, то считается что введено число. (пример 2hrtjnrtj - число) а на самом деле это не число
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2010, 18:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить, является ли введенное значение числом или нет (C++):

Проверить, является ли введенное значение числом - C++
int tmp; cout<<"vvedite chislo"; cin>>tmp; как проверить является ли введенное значени числом?, а то если я ввожу букву то у меня...

Проверка является ли строка числом полностью числом или нет? - C++
как проверить является ли строка типа "23уар" полностью числом или нет?

Проверить является ли введенное слово или число палиндромом - C++
Требуется написать функцию, которая проверяет введенное слово или число, на то что оно является палиндромом. ОБЯЗАТЕЛЬНО! Нельзя...

Строка: Проверить, является ли заданный символ буквой, числом или специальным символом? - C++
Напишите программу, в которой пользователь должен ввести 1 символ. По окончанию программа должна вывести, является ли этот символ буквой,...

Проверка, является значение числом или символом - C++
Мне надо ввести число в переменную, но я хочу проверить значение её, тоесть она число или символ. Я придумал пока что сделать это с помощью...

Является ли введенное слово числом - C++
1)Составить программу определяющую является ли введенное слово числом.

6
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
28.03.2010, 19:02 #2
isdigit - является ли символ числом
isalpha - является ли символ буквой


А вообще, таких функций проверки куча:
isalnum, iswalnum, _isalnum_l, _iswalnum_l, _ismbcalnum, _ismbcalnum_l, _ismbcalpha, _ismbcalpha_, _ismbcdigit, _ismbcdigit_l
Alphanumeric

_ismbcalnum, _ismbcalnum_l, _ismbcalpha, _ismbcalpha_, _ismbcdigit, _ismbcdigit_l
Alphanumeric

isalpha, iswalpha, _isalpha_l, _iswalpha_l, _ismbcalnum, _ismbcalnum_l, _ismbcalpha, _ismbcalpha_, _ismbcdigit, _ismbcdigit_l
Alphabetic

__isascii, iswascii
ASCII

iscntrl, iswcntrl, _iscntrl_l, _iswcntrl_l
Control

__iscsym, __iswcsym, __iscsymf, __iswcsymf, _iscsym_l, _iswcsym_l, _iscsymf_l, _iswcsymf_l
Letter, underscore, or digit

__iscsym, __iswcsym, __iscsymf, __iswcsymf, _iscsym_l, _iswcsym_l, _iscsymf_l, _iswcsymf_l
Letter or underscore

isdigit, iswdigit, _isdigit_l, _iswdigit_l, _ismbcalnum, _ismbcalnum_l, _ismbcalpha, _ismbcalpha_, _ismbcdigit, _ismbcdigit_l
Decimal digit

isgraph, iswgraph, _isgraph_l, _iswgraph_l, _ismbcgraph, _ismbcgraph_l, _ismbcprint, _ismbcprint_l, _ismbcpunct, _ismbcpunct_l, _ismbcspace, _ismbcspace_l
Printable other than space

islower, iswlower, _islower_l, _iswlower_l, _ismbclower, _ismbclower_l, _ismbcupper, _ismbcupper_l
Lowercase

_ismbchira, _ismbchira_l, _ismbckata, _ismbckata_l
Hiragana

_ismbchira, _ismbchira_l, _ismbckata, _ismbckata_l
Katakana

_ismbclegal, _ismbclegal_l, _ismbcsymbol, _ismbcsymbol_l
Legal multibyte character

_ismbcl0, _ismbcl0_l, _ismbcl1, _ismbcl1_l, _ismbcl2, _ismbcl2_l
Japan-level 0 multibyte character

_ismbcl0, _ismbcl0_l, _ismbcl1, _ismbcl1_l, _ismbcl2, _ismbcl2_l
Japan-level 1 multibyte character

_ismbcl0, _ismbcl0_l, _ismbcl1, _ismbcl1_l, _ismbcl2, _ismbcl2_l
Japan-level 2 multibyte character

_ismbclegal, _ismbclegal_l, _ismbcsymbol, _ismbcsymbol_l
Non-alphanumeric multibyte character

isprint, iswprint, _isprint_l, _iswprint_l, _ismbcgraph, _ismbcgraph_l, _ismbcprint, _ismbcprint_l, _ismbcpunct, _ismbcpunct_l, _ismbcspace, _ismbcspace_l
Printable

ispunct, iswpunct, _ispunct_l, _iswpunct_l, _ismbcgraph, _ismbcgraph_l, _ismbcprint, _ismbcprint_l, _ismbcpunct, _ismbcpunct_l, _ismbcspace, _ismbcspace_l
Punctuation

isspace, iswspace, _isspace_l, _iswspace_l, _ismbcgraph, _ismbcgraph_l, _ismbcprint, _ismbcprint_l, _ismbcpunct, _ismbcpunct_l, _ismbcspace, _ismbcspace_l
White-space

Isupper, iswupper, _ismbclower, _ismbclower_l, _ismbcupper, _ismbcupper_l
Uppercase

_isctype, iswctype, _isctype_l, _iswctype_l
Property specified by desc argument

isxdigit, iswxdigit, _isxdigit_l, _iswxdigit_l
Hexadecimal digit

_mbclen, mblen, _mblen_l
Return length of valid multibyte character; result depends on LC_CTYPE category setting of current locale
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
28.03.2010, 19:08  [ТС] #3
мне надо проверить не символ а все число
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
28.03.2010, 19:17 #4
Читаешь число в строку. В цикле проверяешь каждый символ. Если проверка прошла успешно, переводишь строку в числовой тип:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char str[256], *p=str;
bool isd=true;
int digit;
std::cin >> str;
while(*p)
    if(!isdigit(*p++))
    {
        isd=false;
        break;
    }
if(isd)
    digit=atoi(str);
else
    //...
2
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,819
28.03.2010, 19:17 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
// возвращает true если в строке беззнаковое целое
bool isUint(const std::string& s){
    return s.find_first_not_of("0123456789") == std::string::npos;
}
 
int main(){
    std::string buf;
    while ( true ){
        std::cout << "Number: ";
        std::getline(std::cin, buf);
        if ( buf.empty() )
            break;
        std::cout << "Is " << ( isUint(buf) ? "" : "NOT ") << "a number." << std::endl;
    }
    return 0;
}
2
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
28.03.2010, 20:24 #6
Для знакового целого:
C++
1
2
3
4
5
6
7
8
// возвращает true если в строке знаковое целое
bool intSigned(const std::string& s)
{
    size_t offset=0;
    if(s[offset]=='-')
        ++offset;
    return s.find_first_not_of("0123456789", offset) == std::string::npos;
}
1
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
29.03.2010, 00:23  [ТС] #7
Тоесть полюбому строку надо вводить я так понял. Спасибо
0
29.03.2010, 00:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2010, 00:23
Привет! Вот еще темы с ответами:

Проверить, является ли последовательность прогрессией или нет? - C++
Дан последовательность из N целых чисел (N задаётся с клавиатуры). Проверить, является ли данная последовательность прогрессией или нет?...

Написать программу, которая определяет, является ли введенное с клавиатуры строка числом - C++
Использую функции обработки символов. Написать программу, которая определяет, является ли введенное с клавиатуры строка числом. Заранее...

Функции. Проверить, простое число или нет. Увеличить его значение на натуральное число M. Проверить, осталось ли оно простым - C++
Помогите пожалуйста 1. Дано натуральное число N, проверить, простое оно или нет. Увеличить его значение на натуральное число M....

Проверить, является ли введенное целое c++ - C++
Проверить, является ли введенное целое положительное число простым. Простым называется число, которое имеет только два делителя (единицу и...


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

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

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