Удалить каждое четное слово в строке, при этом между словами может стоять не 1, а несколько пробелов - C (СИ)
Формулировка задачи:
Требуется удалить каждое четное слово в строке, при этом между словами может стоять не 1 а несколько пробелов
Решение задачи: «Удалить каждое четное слово в строке, при этом между словами может стоять не 1, а несколько пробелов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <ctype.h> int main() { static char str[256] = "apple fruit orange juice crunch lemon\0"; printf("%s\n",str); int cnt = 1; for (int i = 0; str[i] != '\0'; i++) if ((isspace(str[i]) && !isspace(str[i+1])) || (!isspace(str[i]) && (str[i+1] == '\0'))) { if ((cnt % 2) == 0) { int pos = i-1; while (isspace(str[pos])) pos--; while (!isspace(str[pos])) pos--; int len = abs(pos-i); if (str[i+1] == '\0') len++; while (--len >= 0) { for (int q = pos; str[q] != '\0'; q++) str[q] = str[q+1]; } } cnt++; } printf("%s\n",str); _getch(); }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Объявляется и инициализируется строка str
- Выводится исходная строка на экран
- Инициализируется счётчик cnt, который будет отслеживать количество удалённых пар слов
- В цикле обрабатывается каждое слово в строке, кроме последнего (так как последняя пара слов обрабатывается в отдельном блоке)
- Проверяется, является ли текущее слово четным (или последним в строке)
- Если слово четное, то оно удаляется из строки, сдвигая все последующие слова на одну позицию влево
- После удаления четного слова, счётчик cnt увеличивается на единицу
- После обработки всех слов в строке, выводится измененная строка на экран
- Ждется нажатия клавиши для завершения программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д