Если в строке символов подряд встречаются буква и цифра, то удалить цифру - C (СИ)

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

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

Ввести произвольной строку символов. если подряд встречаются буква i цифра, то изъять цифру; Посчитать количество выполненных операций удаления. Вывести полученную строку.

Решение задачи: «Если в строке символов подряд встречаются буква и цифра, то удалить цифру»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int chisloli(char a)
  4. {
  5.     if(a > '0' && a < '9') return 1;
  6.     return 0;
  7. }
  8. void swap(char *a , char *b)
  9. {
  10.     char tmp = *a;
  11.     *a = *b;
  12.     *b = tmp;
  13. }
  14. int main()
  15. {
  16.     char mas[20];
  17.     gets(mas);
  18.     int i;
  19.     int m = 0;
  20.     int j;
  21.     for(i = 0; i < strlen(mas); i++) {
  22.         if(!chisloli(mas[i]) && chisloli(mas[i+1])) {
  23.             m++;
  24.             for(j = i+1; j < strlen(mas);j++) swap(&mas[j], &mas[j+1]);
  25.             mas[j] = '\0';
  26.         }
  27.     }
  28.     printf("%s", mas);
  29. }

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

  1. #include - подключает файл стандартного ввода/вывода
  2. #include - подключает файл стандартных функций
  3. int chisloli(char a) - функция принимает один аргумент типа char, проверяет является ли символ цифрой, если да, то возвращает 1, иначе 0
  4. void swap(char a , char b) - функция принимает два указателя на символы и меняет их местами
  5. int main() - функция main() является точкой входа в программу
  6. char mas[20]; - объявление массива символов на 20 элементов
  7. gets(mas); - ввод строки с помощью функции gets()
  8. int i; - объявление переменной для цикла
  9. int m = 0; - объявление переменной для подсчета количества пар символов, где первый не является цифрой, а второй является
  10. int j; - объявление переменной для цикла
  11. for(i = 0; i < strlen(mas); i++) { - цикл по всем символам строки
  12. if(!chisloli(mas[i]) && chisloli(mas[i+1])) { - проверка, что текущий символ не цифра и следующий символ является цифрой
  13. m++; - увеличение счетчика, если условие выполняется
  14. for(j = i+1; j < strlen(mas);j++) swap(&mas[j], &mas[j+1]); - цикл, который меняет местами символы, начиная с i+1 и до конца строки, при этом не меняя последний символ (так как он уже за пределами массива)
  15. mas[j] = '\0'; - добавление нулевого символа в конец строки после всех перемещений
  16. } - конец условия проверки
  17. printf(%s, mas); - вывод строки на экран с помощью функции printf()
  18. } - конец цикла for()
  19. } - конец функции main()
  20. } - конец программы

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


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

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

9   голосов , оценка 3.556 из 5

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

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

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