Удалить из строки подряд идущие цифры - C (СИ)

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

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

не могу разобраться со строками в си... я новичок.

Решение задачи: «Удалить из строки подряд идущие цифры»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
void pars(char *str);
void shift(char *s);
int digit(char c);
 
int main(void) {
    char string[100] = "a+12.3456-b-0.456789+1.3-45678";
    printf("%s\n", string);
    pars(string);
    printf("%s\n", string);
    return EXIT_SUCCESS;
}
 
void pars(char *str) {
    while (*str) {
        if (*str == '.' && digit(*(str + 1)) && digit(*(str + 2))) {
            str += 3;
            while (digit(*str)) {
                shift(str);
            }
        } else {
            ++str;
        }
    }
}
 
void shift(char *s) {
    while (*s) {
        *s = *(s + 1);
        ++s;
    }
}
 
int digit(char c) {
    if (c >= '0' && c <= '9') {
        return 1;
    } else {
        return 0;
    }
}

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

В данном коде реализована функция pars, которая удаляет из строки подряд идущие цифры. Для этого в функции используется два вспомогательных действия:

  1. Функция digit проверяет, является ли символ цифрой. Если да, то возвращается 1, иначе возвращается 0.
  2. Функция shift сдвигает все символы в строке на один вправо. В функции pars происходит следующее:
  3. Проверяется текущий символ строки. Если это точка, и следующие за ней два символа являются цифрами, то выполняется следующее действие.
  4. Строка сдвигается на три символа вперед, и в цикле, пока следующий символ является цифрой, выполняется действие из пункта 1.
  5. Если текущий символ не является точкой, то он пропускается, и строка сдвигается на один символ вперед. В функции main создается строка, выводится на экран, затем вызывается функция pars, после чего строка снова выводится на экран. Пример входных и выходных данных: Входные данные: a+12.3456-b-0.456789+1.3-45678 Выходные данные: a+.3456-b-0.456789+.3-45678

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


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

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

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