@Retr0Hacker

Как удалить из предложения слова в которых нет указанной буквы?

Добрый вечер, всем! Появилось новое задание:
"С клавиатуры ввести предложение. Удалить из него все слова, в которых нет указанной буквы."

Не могу никак переделать функцию remove_words(она удаляет все слова в которых ЕСТЬ указанная буква, а надо наоборот)

Дайте совет что и как переделать?

Вот мой код:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#define MAX_SIZE 100
char* remove_words(char* s, int c);

int main()
{
    char s[MAX_SIZE];
    char c;

    printf("Enter string: ");
    gets_s(s);

    printf("Enter letter: ");
    scanf_s("%c", &c);

    puts(remove_words(s, c));

    return 0;
}

char* remove_words(char* s, int c) {
    int   g;
    char* i, * p, * t = s;
    for (p = s; *s; *s = *p) {
        if (!isspace(*p)) {
            i = p;
            g = 0;
            while (*i && !isspace(*i)) {
                if (*i == c)
                    g = 1;
                ++i;
            }

            if (g)
                p = i;
            else {
                while (p != i)
                    *s++ = *p++;
            }
        }
        else
            ++s, ++p;
    }
    return t;
}


P.S.
Я уже понял что нужно if (*i == c) ==> if (*i != c), и, скорее всего, переделать вот этот участок:
if (g)
                p = i;
            else {
                while (p != i)
                    *s++ = *p++;
            }
        }
        else
            ++s, ++p;
    }
    return t;

Но что бы я не пробовал, ничего не помогает!
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Если бы вы использовали нормальные имена переменных, то вам бы сразу стало очевидно, какую одну строчку (даже один символ!) надо изменить, чтобы стали удалятся слова без буквы, вместо слов с буквами.

Подумайте, что хранится в переменной g - что она означает, какой ее физический смысл, какие значения и при каких условиях она принимает?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
СУПЕРТЕЛ Санкт-Петербург
от 165 000 ₽
.White Code Санкт-Петербург
от 150 000 до 250 000 ₽
.White Code Санкт-Петербург
от 350 000 до 400 000 ₽