Разделить предложение на слова и каждому слову присвоить порядковое число - C (СИ)

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

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

как разделить предложение на слова и каждому слову присвоить порядковое число а затем по тому числу слово забрать?

Решение задачи: «Разделить предложение на слова и каждому слову присвоить порядковое число»

textual
Листинг программы
#include <stdio.h>
 
void rem_word(char *sen, int n);
 
int main(void)
{
    char sentence[81];
    int number;
    
    puts("Enter a sentence.");
    fgets(sentence, 80, stdin);
    printf("Number of words to remove: ");
    scanf("%i", &number);
    int i, arr[number];
    printf("Positions: ");
    for (i=0; i<number; ++i)
        scanf("%i", &arr[i]);
    for (i=number-1; i>=0; i--)
        rem_word(sentence, arr[i]);
 
    printf("%s", sentence);
    
    return 0;
}
 
void rem_word(char *sentence, int number)
{
    int i, pos, state;
    int beginning=-1, end=-1;
    
    for (i=0, pos=0, state=0 ; sentence[i]; i++) {
        if (sentence[i]==' ')
            state = 0;
        else if (state == 0) {
            state = 1;
            pos++;
            if (beginning>=0 && end==-1)
                end = i;
            if (pos == number)
                beginning = i;
        }
    }
    if (beginning>=0 && end==-1)
        end = --i;
 
    if (beginning>=0 && end>beginning) {
        end = end - beginning;
        i = beginning;
        do {
            sentence[i] = sentence[i+end];
        } while (sentence[i++]);
    }
}

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

В этом коде:

  1. Вводится предложение с помощью функции fgets().
  2. Затем пользователю предлагается ввести количество слов, которые необходимо удалить.
  3. После этого программа просит ввести позиции этих слов.
  4. Используя эти позиции, функция rem_word() удаляет указанные слова из предложения.
  5. Наконец, измененное предложение выводится с помощью функции printf().

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


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

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

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