Удалить из строки слова нечетной длины - 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, что означает успешное выполнение программы.