Удалить из строки все слова нечетной длины - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание такое: Дана строка символов. Удалить из нее все слова нечетной длины. Слова отделяются друг от друга одним пробелом. Где тут ошибка?
#include <stdio.h> 
#include <conio.h> 
#include <string.h> 
#include <ctype.h> 
int main(void) 
{ 
 char str[40], newst[40], shag=' ', *s; 
 unsigned int top; 
 gets(str); 
 strcpy(s,str); 
 while (true ) 
 { 
 top=strlen(s); 
 if(top%2==0)
             { 
             strcat(newst,s); 
             strcat(newst,&shag); 
             s+=top; 
             } 
 } 
 strcat(newst,"\0"); 
 puts(newst); 
 getch(); 
 return 0; 
}

Решение задачи: «Удалить из строки все слова нечетной длины»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
 
int main( void ){
    const int SIZE = 40;
    char str[SIZE], newstr[SIZE];
    char *token = NULL;
    
    fgets(str, SIZE, stdin);
    puts(str);
    
    newstr[0] ='\0';
    
    token = strtok(str, " ");
    while ( token ){
        if ( strlen(token) % 2 == 0 ){
            strcat(newstr, token);
            strcat(newstr, " ");
        }
        token = strtok(NULL, " ");
    }
    
    puts(newstr);
    
    getchar();
    
    return 0;
}

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

В этом коде:

  1. Объявлены две строки: исходная str и новая newstr.
  2. С помощью fgets в str считывается строка из стандартного ввода.
  3. С помощью puts эта строка выводится на экран.
  4. Первый символ новой строки устанавливается в \0.
  5. С помощью strtok строка str разделяется на токены (слова) по пробелу.
  6. Пока токены не закончатся, они проверяются на нечетную длину с помощью оператора %. Если длина нечетная, то токен не добавляется в новую строку.
  7. Если длина токена четная, то он добавляется в новую строку с помощью функции strcat. После добавления токена, добавляется пробел с помощью strcat.
  8. Выводится новая строка с помощью puts.
  9. С помощью getchar считывается символ из стандартного ввода (для завершения работы программы).
  10. Программа возвращает 0, что означает успешное завершение работы.

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


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

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

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