Удалить из строки слова нечетной длины - 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;
}

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

В этом коде задача состоит в удалении из строки всех слов, длина которых нечетная.

  1. В начале программы объявляются четыре переменные типа int: i, j, k, l, и три переменные типа char: s.
  2. Переменная i инициализируется значением 0, а переменная k — значением 0.
  3. Затем вводится строка с помощью функции gets(s).
  4. Далее в цикле while считывается каждый символ строки.
  5. Если текущий символ является пробелом, то он пропускается, а если это не пробел, то он выводится на экран.
  6. Если текущий символ не является пробелом, то запоминается его индекс.
  7. В цикле for пробел перед текущим символом заменяется на пустую строку.
  8. Если текущий символ не является пробелом, то в цикле for он заменяется на пустую строку.
  9. Если длина текущего слова нечетная, то в цикле for все символы этого слова заменяются на пустую строку.
  10. В конце программы возвращается 0, что означает успешное выполнение программы.

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


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

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

7   голосов , оценка 3.571 из 5
Похожие ответы