Удалить из строки слова нечетной длины - C (СИ)
Формулировка задачи:
Дана строка символов. Удалить из нее все слова нечетной длины. Слова отделяются друг от друга одним пробелом. Подскажите идею, как реализовать.
#include<stdio.h> #include<string.h> int main() { char s[50]; int i=0,k=0,j; gets (s); for(i=0;i<strlen(s);i++) { k+=i; if(s[i]=' '&&k%2==0) for(j=i-k;j<i;j++) printf("%c",s[i]); k=0; } return 0; }
Решение задачи: «Удалить из строки слова нечетной длины»
textual
Листинг программы
#include<stdio.h> #include<string.h> int main() { char s[50]; int i,j,k,l; i=0; k=0; gets (s); while(s[i]!=0) { j=i; for(;s[i]==' '&&s[i]!=0;i++); l=i; for(;s[i]!=' '&&s[i]!=0;i++); if(((i-l)&1)==0) { for(;j<i;j++,k++) { s[k]=s[j]; printf("%c",s[k]); } } } s[k]=0; return 0; }
Объяснение кода листинга программы
В этом коде задача состоит в удалении из строки всех слов, длина которых нечетная.
- В начале программы объявляются четыре переменные типа int: i, j, k, l, и три переменные типа char: s.
- Переменная i инициализируется значением 0, а переменная k — значением 0.
- Затем вводится строка с помощью функции gets(s).
- Далее в цикле while считывается каждый символ строки.
- Если текущий символ является пробелом, то он пропускается, а если это не пробел, то он выводится на экран.
- Если текущий символ не является пробелом, то запоминается его индекс.
- В цикле for пробел перед текущим символом заменяется на пустую строку.
- Если текущий символ не является пробелом, то в цикле for он заменяется на пустую строку.
- Если длина текущего слова нечетная, то в цикле for все символы этого слова заменяются на пустую строку.
- В конце программы возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д