Дана строка. Если она представляет собой запись целого числа, то вывести 1 - C (СИ) (73459)

Узнай цену своей работы

Формулировка задачи:

Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя преобразовать в число, то вывести 0. Помогите , пожалуйста. Бьюсь бьюсь над этой задачей и даже не могу понять как ее делать. 1 курс. Прошли самое элементарное. И такое же простое, значит, должно быть решение. Если кому не сложно, хотя бы подкиньте идей. А то я теряюсь в догадках =((((((((

Решение задачи: «Дана строка. Если она представляет собой запись целого числа, то вывести 1»

textual
Листинг программы
  1. int GetNumType(const char * p) {
  2.     int float_sep = 0;                 // количество найденных разделителей в строке
  3.     if (*p == '\0') return 0;          // если пустая строка то сразу же выходим
  4.     for (;*p; ++p) {                   // для каждого символа в строке
  5.         if (*p >= '0' && *p <= '9') continue; // если текущий символ один из "0..9" то
  6.                                        // начинаем новую итерацию
  7.         if (*p != '.') return 0;       // иначе если текущий символ не равен '.'
  8.                                        //  то делаем вывод что строка не может быть
  9.                                        //  представлена числом
  10.         ++float_sep;                   // иначе увеличиваем кол-во разделителей
  11.     }                                  // конец цикла for()
  12.     if (float_sep == 0)                // если во всей строке мы не нашли не одного
  13.         return 1;                      //  разделителя '.' то делаем вывод что число int
  14.     if (float_sep == 1 && p[-1] != '.')// если был найден только один разделитель
  15.         return 2;                      // и последний символ в строке не является разделителем
  16.                                        // то числов вещественное
  17.     return 0;                          // иначе нельзя преобразовать в число
  18. }

Объяснение кода листинга программы

Список элементов:

  1. *p - указатель на текущий символ в строке
  2. '\0' - символ-маркер конца строки
  3. float_sep - переменная для подсчета разделителей в строке
  4. '0'..'9' - символы, которые могут встречаться в числе
  5. '.' - символ, обозначающий десятичную дробь в числе
  6. 0 - возвращаемое значение, если строка пустая
  7. 1 - возвращаемое значение, если в строке нет разделителей '.'
  8. 2 - возвращаемое значение, если в строке есть только один разделитель '.'
  9. 0 - возвращаемое значение, если строка не может быть преобразована в число

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы