Как удалить из предложения повторяющиеся слова?

Для удаления повторяющихся слов из предложения на языке программирования C, можно использовать следующий алгоритм:

1. Считать входное предложение с помощью функций ввода в C, таких как scanf или fgets, и сохранить его в строковую переменную.
2. Инициализировать пустую строку, которая будет содержать отфильтрованное предложение без повторяющихся слов.
3. Создать массив из строк, в котором будут храниться все слова в предложении. Максимальный размер массива должен быть таким, чтобы в него помещались все слова предложения.
4. Разбить предложение на отдельные слова. Для этого можно использовать функцию strtok, которая разделяет строку на слова, используя заданный разделитель, в данном случае пробел.
5. Проверять каждое слово, сравнивая его со всеми предыдущими словами в массиве. Если слово уже присутствует в массиве, то оно является повторяющимся, и его необходимо пропустить. Если же слово встречается впервые, оно добавляется в массив и в конечную строку.
6. Вывести отфильтрованное предложение без повторяющихся слов.

Вот пример реализации данного алгоритма на языке C:

#include <stdio.h>
#include <string.h>

#define MAX_WORDS 100 // Максимальное количество слов в предложении
#define MAX_WORD_LENGTH 50 // Максимальная длина слова

int main() {
    char sentence[MAX_WORD_LENGTH];
    char filtered_sentence[MAX_WORD_LENGTH];
    char words[MAX_WORDS][MAX_WORD_LENGTH];
    int count = 0;

    printf("Введите предложение: ");
    fgets(sentence, sizeof(sentence), stdin);

    char* word = strtok(sentence, " ");

    while (word != NULL) {
        int duplicate = 0;

        // Проверяем, есть ли текущее слово в массиве
        for (int i = 0; i < count; i++) {
            if (strcmp(word, words[i]) == 0) {
                duplicate = 1;
                break;
            }
        }

        // Если слово является уникальным, добавляем его в массив и конечную строку
        if (!duplicate) {
            strcpy(words[count], word);
            strcat(filtered_sentence, word);
            strcat(filtered_sentence, " ");
            count++;
        }

        word = strtok(NULL, " ");
    }

    // Выводим отфильтрованное предложение
    printf("Предложение без повторяющихся слов: %sn", filtered_sentence);

    return 0;
}

Этот пример реализует алгоритм удаления повторяющихся слов в предложении на языке C. Он считывает предложение с помощью функции fgets, разбивает его на слова с помощью функции strtok, проверяет каждое слово на наличие в массиве с помощью функции strcmp и выводит конечное предложение без повторяющихся слов.