Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2009, 08:23   #1
Mikimaus
Пользователь
 
Регистрация: 03.10.2009
Сообщений: 24
По умолчанию определение типа

Мне нужно сделать такое условие
Если строка=число
выполняются действия
подбросте идейку пожалуйста
Mikimaus вне форума Ответить с цитированием
Старый 22.11.2009, 10:22   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Функция isdigit()
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 22.11.2009, 12:40   #3
Mikimaus
Пользователь
 
Регистрация: 03.10.2009
Сообщений: 24
По умолчанию

а если это число 1,2(с запятой)
Mikimaus вне форума Ответить с цитированием
Старый 22.11.2009, 13:02   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Обрабатывайте посимвольно
Код:
...
int flag=1;
for(int i=0; str[i]!='\0'; ++i)
     if(!isdigit(str[i]) && str[i]!=',')
     {
          flag=0;
          break;
     }
if(flag) //В str число
else //В str не число
...
При желании можно еще добавить проверку на точку '.'
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария

Последний раз редактировалось Blade; 22.11.2009 в 13:09.
Blade вне форума Ответить с цитированием
Старый 22.11.2009, 13:13   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Если локаль не изменять, то все-таки не 1,2, а 1.2.
Код:
const char[11] digits = {'0','1', /*...*/, '9', '.'};
bool myisfloat(std::string s)
{
bool aga = true;
for(int i = 0; i < s.length(); i++)
 {
 bool ugu = false;
 for (int j = 0; j < 11; j++)
  if (s[i] == digits[j])
   ugu = true;
 aga = ugu;
 }
return aga;
}
Ну или
Код:
if(s[i] != '0' && ... s[i] != '.')
 aga = false;
Или и вовсе
Код:
aga = (s[i] == '0' || ... || s[i] = '.')
P.S. Ну да, правда что - isdigit вместо проверки всех цифр. Опять же проверьте наличие не более одной запятой или точки.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 22.11.2009 в 13:15.
Гром вне форума Ответить с цитированием
Старый 22.11.2009, 16:46   #6
Mikimaus
Пользователь
 
Регистрация: 03.10.2009
Сообщений: 24
По умолчанию

А тип числа как определить целое оно или с точкой
Mikimaus вне форума Ответить с цитированием
Старый 22.11.2009, 17:12   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ну если встретилась в строке точка - то, соответственно число с плавающей точкой. Если одни цифры - целое.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение типа видеокарты (TASM) -danger- Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 24.03.2011 06:13
Запись числа типа инт в ячейку двумерного массива типа char AxenicX Помощь студентам 1 25.09.2009 00:35
определение типа ЦП и ОЗУ ALEKS_STRELOK Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 01.04.2009 05:22
Определение типа переменной Игорь007 Общие вопросы C/C++ 7 10.01.2009 13:01
Определение типа курсора в сторонних приложениях. lazutov Win Api 1 11.09.2008 20:59