Литералы, поиск чисел с целой и дробной частью - C (СИ)

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

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

в исходной стpоке ищутся и pаспечатываются в столбик все последовательности литеp, пpедставляющие записи целых чисел или действительных чисел в фоpмате <целая часть>.<дpобная часть>. Сами числа в фоpмате float последовательно записываются в буфеp. Напишите ,пожалуйста, хотя бы идею, а лучше код, желательно полегче в понимании,спасибо.

Решение задачи: «Литералы, поиск чисел с целой и дробной частью»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#include <string.h>
 
void select_numbers(const char *s)
{
    char buf[100];
    double x;
 
    while (*s)
    {
        if (isdigit(*s))
        {
            char *s0 = s;
            int floatNumber = 0;
            while ( isdigit(*s) || *s == '.' )
                ++s;
 
            memcpy(buf, s0, s-s0);
            buf[s-s0] = '\0';
            sscanf(buf, "%lf", &x);
            printf("%lf\n", x);
        }
        else
            ++s;
    }
}
 
int main()
{
    const char *s = "abc123def3.14qqq42";
    select_numbers(s);
}

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

  1. Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода и строками.
  2. Определяем функцию select_numbers, которая принимает на вход указатель на строку.
  3. Создаем буфер для работы с числами, объявленный как массив символов.
  4. Объявляем переменную типа double для хранения чисел с плавающей точкой.
  5. В цикле while проходим по каждому символу входной строки.
  6. Проверяем, является ли текущий символ цифрой или точкой.
  7. Если символ является цифрой или точкой, то начинаем извлекать число из строки.
  8. В этом цикле перемещаем указатель на следующий символ после текущего числа.
  9. Копируем извлеченную подстроку в буфер buf.
  10. Используем функцию sscanf для преобразования строки в число с плавающей точкой и сохраняем его в переменной x.
  11. Выводим полученное число на экран.
  12. В функции main создаем указатель на строку abc123def3.14qqq42.
  13. Вызываем функцию select_numbers, передавая ей в качестве аргумента указатель на строку из пункта 12.
  14. Программа завершается.

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


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

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

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