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

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

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

Задание: Распечатать введенное предложение, удалив из него слова, которые состоят менее чем из n букв. Считать. что предложение – это последовательность слов с точкой в конце. Слово – последовательность символов, не принадлежащих символам – разделителям. Число букв n задать в командной строке. Моя версии программы, которая не работает:
#include <string.h>
 
#include <stdio.h>
 
#include <conio.h>
 
int main()
 
{
 
       unsigned int n;
 
       char *find,*simvoli=" .!?";
 
       char text[]=«I like this programm becouse it likes me.»;
 
       scanf("%u",&n);
 
       find=strtok(text,find);
 
       while(find)
 
             if(strlen(find)<n)
 
                    printf("%s",find);
 
       return 0;
 
}
Программу надо сделать чисто на Си, без использования возможностей Си++.

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

textual
Листинг программы
#include <stdio.h>
 
 
int main()
{
    char instr[255];
    char outstr[255];
    int count=0;
    int wordCount = 0;
    int inptr=0;
    int outptr=0;   
    
    while((printf("enter string: ")) && (gets(instr)) && (printf("enter count word: ")) && (scanf("%d",&count)) && getchar() != '\n');
    while(instr[inptr] != '.'){
        if (instr[inptr] != ' '){
            wordCount++;                                    
        }
        if (instr[inptr] == ' '){           
            if (wordCount < count){
                outptr -= wordCount;                                
            }
            wordCount=0;                        
        }               
        outstr[outptr] = instr[inptr];                  
        outptr++;
        inptr++;
    }
    outstr[outptr++]='\0';
    printf("\n%s\n", outstr);
                    
    return 0;   
}

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

В этом коде:

  1. Объявлены две строки: instr (вводная строка) и outstr (выводная строка).
  2. Инициализированы счетчики: count (количество слов, которые нужно удалить), wordCount (количество слов во введенной строке), inptr (индекс текущего символа во входной строке), outptr (индекс текущего символа во выходной строке).
  3. В цикле while программа запрашивает ввод строки и количество слов для удаления.
  4. Во втором цикле while программа проходит по каждому символу входной строки. Если символ не является пробелом, увеличивается счетчик wordCount. Если символ является пробелом, проверяется, достигнуто ли количество слов, указанное пользователем. Если это так, то счетчик outptr уменьшается на количество слов, и счетчик wordCount сбрасывается.
  5. Каждый символ входной строки копируется в выходную строку, и счетчик outptr увеличивается.
  6. После прохождения всех символов входной строки, в выходную строку добавляется нулевой символ, и она выводится на экран.
  7. Программа завершается возвратом 0.

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


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

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

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