Если в строке символов подряд встречаются буква и цифра, то удалить цифру - C (СИ)
Формулировка задачи:
Ввести произвольной строку символов. если подряд встречаются буква i цифра, то изъять цифру;
Посчитать количество выполненных операций удаления. Вывести полученную строку.
Решение задачи: «Если в строке символов подряд встречаются буква и цифра, то удалить цифру»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int chisloli(char a)
- {
- if(a > '0' && a < '9') return 1;
- return 0;
- }
- void swap(char *a , char *b)
- {
- char tmp = *a;
- *a = *b;
- *b = tmp;
- }
- int main()
- {
- char mas[20];
- gets(mas);
- int i;
- int m = 0;
- int j;
- for(i = 0; i < strlen(mas); i++) {
- if(!chisloli(mas[i]) && chisloli(mas[i+1])) {
- m++;
- for(j = i+1; j < strlen(mas);j++) swap(&mas[j], &mas[j+1]);
- mas[j] = '\0';
- }
- }
- printf("%s", mas);
- }
Объяснение кода листинга программы
- #include
- подключает файл стандартного ввода/вывода - #include
- подключает файл стандартных функций - int chisloli(char a) - функция принимает один аргумент типа char, проверяет является ли символ цифрой, если да, то возвращает 1, иначе 0
- void swap(char a , char b) - функция принимает два указателя на символы и меняет их местами
- int main() - функция main() является точкой входа в программу
- char mas[20]; - объявление массива символов на 20 элементов
- gets(mas); - ввод строки с помощью функции gets()
- int i; - объявление переменной для цикла
- int m = 0; - объявление переменной для подсчета количества пар символов, где первый не является цифрой, а второй является
- int j; - объявление переменной для цикла
- for(i = 0; i < strlen(mas); i++) { - цикл по всем символам строки
- if(!chisloli(mas[i]) && chisloli(mas[i+1])) { - проверка, что текущий символ не цифра и следующий символ является цифрой
- m++; - увеличение счетчика, если условие выполняется
- for(j = i+1; j < strlen(mas);j++) swap(&mas[j], &mas[j+1]); - цикл, который меняет местами символы, начиная с i+1 и до конца строки, при этом не меняя последний символ (так как он уже за пределами массива)
- mas[j] = '\0'; - добавление нулевого символа в конец строки после всех перемещений
- } - конец условия проверки
- printf(
%s
, mas); - вывод строки на экран с помощью функции printf() - } - конец цикла for()
- } - конец функции main()
- } - конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д