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

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

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

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

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

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

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

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

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

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


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

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

13   голосов , оценка 3.846 из 5
Похожие ответы