Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
Tiphon
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 7
#1

Как проверить что в переменной char хранится число?

28.01.2014, 16:55. Просмотров 4025. Ответов 40
Метки нет (Все метки)

Т.е. что там использованы только числа от 0 до 9 и нет букв?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2014, 16:55
Ответы с готовыми решениями:

Возможно ли вызвать функцию, имя которой хранится в переменной типа char* ?
Или возможно ли создать указатель на функцию по имени в переменной. Извиняюсь...

Как я могу проверить равно ли значение переменной char одному из указанных значений?
Как я могу проверить равно ли значение переменной char одному из указанных...

Определить, целое число хранится в переменной, или дробное
помогите ребята.я только учу сам с++.наработал свой проект все вроде пока...

Как проверить, что находится в переменной?
Недавно возник вопрос...как проверить через инструкцию if какое значение...

Как проверить что к переменной прибавилось более чем X
Здравствуйте Уважаемые Форумчане! Сегодня у меня возникла следующая проблема...

40
programina
2050 / 605 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
28.01.2014, 18:17 #21
Цитата Сообщение от alsav22 Посмотреть сообщение
Тем, что в этом решении две строки.
Это ни о чем не говорит. Я тоже могу свернуть код в функцию и будет две строки.
0
Тамика
Котовчанин
918 / 462 / 195
Регистрация: 16.02.2010
Сообщений: 3,264
Записей в блоге: 31
28.01.2014, 18:19 #22
А как же быстродействие? Насколько знаю, код programina более "строчный", но работать будет быстрее.
0
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,377
28.01.2014, 18:20 #23
Цитата Сообщение от alsav22 Посмотреть сообщение
Тем, что в этом решении две строки
Спокойно. Она просто сейчас подведет под то, что мы тут все мыслим шаблонами и не в состоянии принять тот факт, что ее решение рабочее. Какой смысл вестись на провокации.
0
programina
2050 / 605 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
28.01.2014, 18:36 #24
Цитата Сообщение от 0x10
Вам какой из эвристических принципов напомнить?
Что не нужно изобретать велосипед, когда есть решение конкретной задачи? Что при ручном перечислении элементов конечного множества код потенциально опасен в плане возможных опечаток? В противном случае, напомнить о таблице ascii и что числа в ней располагаются последовательно, а потому можно обойтись более компактной конструкцией?

Не по теме:

А почему вас так волнует какие принципы я применяю для решения задачи? :angry: Может мне переменные теперь обзывать в соответствии с вашими пожеланиями?


Немного успокою вас, ошибки в моем коде нет, и по функциональности он ничем не отличается от isdigit().
Поэтому ничего более вразумительного, чем два ваших матерных слова, я так и не услышала.
0
0x10
28.01.2014, 18:38
  #25

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Может мне переменные теперь обзывать в соответствии с вашими пожеланиями?
Пишите как угодно. Не в моих проектах - и ладно.

0
programina
2050 / 605 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
28.01.2014, 18:40 #26
дубль
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.01.2014, 18:48 #27
Цитата Сообщение от programina Посмотреть сообщение
Это ни о чем не говорит. Я тоже могу свернуть код в функцию и будет две строки.
Не будет. От того, что часть кода поместите в функцию, количество строк кода не уменьшится, а увеличится.
0
Tiphon
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 7
28.01.2014, 18:48  [ТС] #28
Спасибо всем за такое большое внимание к этой теме. Я всего отошёл на час а тут уже 3 страницы.
Я использовал следующую конструкцию, чтобы проверить все символы по указателю на тип char.

C++
1
2
3
4
5
   for (int i = 0; count[i] != '\0'; ++i){
   if ( !isdigit(count[i]) )
   cout << "ÔîðìГ*ГІ ââåäåГ*ûõ Г¤Г*Г*Г*ûõ Г*åêîððåêòåГ*. ÏðîãðГ*ììГ* áóäåò Г§Г*êðûòГ*." << endl;
   return 0;
   }
0
zss
Модератор
Эксперт С++
7098 / 6629 / 4196
Регистрация: 18.12.2011
Сообщений: 17,478
Завершенные тесты: 1
28.01.2014, 18:51 #29
Tiphon, Со скобками обращайтесь осторожнее:
C++
1
2
3
4
5
6
7
8
9
for (int i = 0; count[i] != '\0'; ++i)
{
   if ( !isdigit(count[i]) )
   {
        cout << "Формат введеных данных некорректен. Программа будет закрыта." << endl;
        system("pause");
        return 0;
    }
}
1
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.01.2014, 18:52 #30
Чтобы не было проблем с русскими символами:
C++
1
if ( !isdigit((unsigned char)(count[i]) )
1
programina
2050 / 605 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
28.01.2014, 18:56 #31
Цитата Сообщение от 0x10 Посмотреть сообщение

Не по теме:


Пишите как угодно. Не в моих проектах - и ладно.

Вот спасибо! А еще забыла спросить, для отступов пробелы писать или табы? Не уверена, но подозреваю, что пробелы - это говнокод...

Добавлено через 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Не будет. От того, что часть кода поместите в функцию, количество строк кода не уменьшится, а увеличится.
А давайте еще подсчитаем сколько строк в #include <ctype.h> , который нужен для isdigit()
0
alsav22
28.01.2014, 19:02
  #32

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
А давайте еще подсчитаем сколько строк в #include <ctype.h> , который нужен для isdigit()
Зачем? Разговор о том: сколько строк пишет программист. Если решение можно понятно (что важно) записать в две строки, то зачем писать десять, если это дополнительно коду ничего не даёт?

0
zss
Модератор
Эксперт С++
7098 / 6629 / 4196
Регистрация: 18.12.2011
Сообщений: 17,478
Завершенные тесты: 1
28.01.2014, 19:02 #33
Цитата Сообщение от programina Посмотреть сообщение
А давайте еще подсчитаем сколько строк в #include <ctype.h>
Вместо этого из интереса проверил размер exe файла.
В обоих случаях одинаковый - 7 Kb.
1
Tiphon
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 7
28.01.2014, 19:03  [ТС] #34
Спасибо
0
alsav22
28.01.2014, 19:05
  #35

Не по теме:

Цитата Сообщение от zss Посмотреть сообщение
Вместо этого из интереса проверил размер exe файла.
Разговор не об этом.

0
programina
2050 / 605 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
28.01.2014, 19:08 #36
Цитата Сообщение от alsav22 Посмотреть сообщение
Зачем? Разговор о том: сколько строк пишет программист. Если решение можно понятно (что важно) записать в две строки, то зачем писать десять, если это дополнительно коду ничего не даёт?
Скорость сборки у меня должна быть больше.
0
alsav22
28.01.2014, 19:09
  #37

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Скорость сборки у меня должна быть больше.
На сколько, в этом коде?

0
programina
2050 / 605 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
28.01.2014, 19:18 #38
Цитата Сообщение от alsav22 Посмотреть сообщение

Не по теме:


На сколько, в этом коде?

Не могу ответить на ваш вопрос, так как он с подвохом (в этом коде)

Добавлено через 2 минуты
С одной стороны скорость сборки будет выше если проект большой и в нем постоянно используются "велосипеды", а с другой сторны к моему коду не должно быть претензий, потому что ничего другого кроме проверки цифры в нем нет.
0
alsav22
28.01.2014, 19:28
  #39

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Не могу ответить на ваш вопрос, так как он с подвохом (в этом коде)
Это не подвох. Разговор идёт о конкретном коде. Вы же про него написали, что быстрее собирается?
Цитата Сообщение от programina Посмотреть сообщение
а с другой сторны к моему коду не должно быть претензий, потому что ничего другого кроме проверки цифры в нем нет.
А в коде gromo ещё что-то есть?

0
programina
28.01.2014, 19:46     Как проверить что в переменной char хранится число?
  #40

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Это не подвох. Разговор идёт о конкретном коде. Вы же про него написали, что быстрее собирается?
я отвечала на ваш пост, где вы пишете о том, что важно сколько пишет программист, но так как программа только проверяет цифру, я подумала что вы имеете ввиду общий случай.
Цитата Сообщение от alsav22 Посмотреть сообщение
А в коде gromo ещё что-то есть?
К коду gromo у меня нет притензий.

0
28.01.2014, 19:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 19:46
Привет! Вот еще темы с ответами:

Как проверить, что число делится нацело
как записать такое условие в код if(если число делится нацело) { }

Как проверить, что пользователь ввел число в переменную string?
Скажите пожалуйста как проверить что пользователь ввел число в переменную...

Как на стадии компиляции проверить что число является степенью двойки
Очень простой вопрос - как на стадии компиляции проверить что число является...


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

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

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