Напечатать все слова из предложения, содержащие более 6 букв - C (СИ)

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

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

С клавиатуры ввести предложения. Напечатать все слова из этого предложения, содержащие более 6 букв ( знаки препинания не учитывать )

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. void out_in_words(FILE* _out, FILE* _in){
  5.     int  c, i;
  6.     char s[8], *p = &s[0];
  7.     i = 0;
  8.     while(((c = fgetc(_in)) != EOF) && !ferror(_in)){
  9.  
  10.         if(isalpha(c)){
  11.             if(i < 6){
  12.                 *p++ = c;
  13.                 if(++i == 6){
  14.                     *p = '\0';
  15.                     fprintf(_out, "%s", s);
  16.                 }
  17.             } else
  18.                 fputc(c, _out);
  19.         } else {
  20.             if(i == 6)
  21.                 fputc('\n', _out);
  22.             i = 0;
  23.             p = &s[0];
  24.         }
  25.  
  26.         if(c == '\n')
  27.             break;
  28.     }
  29. }
  30.  
  31. int main(void){
  32.     out_in_words(stdout, stdin);
  33.     return 0;
  34. }

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

В этом коде на языке C представлена программа, которая читает текст из стандартного ввода (stdin) и выводит на стандартный вывод (stdout) только те слова, которые содержат шесть или более букв. Список действий, которые происходят в коде:

  1. #include Включает в программу функции файла стандартного ввода/вывода, которые позволяют программе работать с консолью.
  2. #include Включает в программу функции файла ctype.h, которые позволяют программе работать с буквами и символами.
  3. void out_in_words(FILE _out, FILE _in) { Определяет функцию с именем out_in_words, которая принимает два аргумента типа FILE*. Эти аргументы используются для работы с потоками ввода/вывода.
  4. int c, i; Объявляет две переменные типа int, которые будут использоваться в цикле. Переменная c будет использоваться для хранения текущего символа, а переменная i будет использоваться для подсчета количества букв в слове.
  5. *char s[8], p = &s[0];** Объявляет массив s типа char на 8 символов и указатель p, который указывает на первый элемент массива s.
  6. i = 0; Инициализирует переменную i значением 0.
  7. while(((c = fgetc(_in)) != EOF) && !ferror(_in)){ Начинает цикл while, который будет выполняться до тех пор, пока не достигнется конец файла (EOF) и не возникнет ошибка чтения файла.
  8. if(isalpha(c)){ Проверяет, является ли текущий символ буквой.
  9. if(i < 6){ Если текущий символ является буквой и переменная i содержит значение меньше 6, то...
  10. *p++ = c; Добавляет текущий символ в массив s и увеличивает значение указателя p на 1.
  11. if(++i == 6){ Если значение переменной i стало равным 6, то...
  12. *p = '\0'; Устанавливает нулевой символ в конце строки в массиве s.
  13. fprintf(_out, %s, s); Выводит содержимое массива s на стандартный вывод.
  14. } Конец условия if для переменной i.
  15. } else { Если текущий символ не является буквой или значение переменной i больше или равно 6, то...
  16. fputc(c, _out); Выводит текущий символ на стандартный вывод.
  17. if(c == '\n') Если текущий символ является символом новой строки (символом \n), то...
  18. break; Прерывает цикл while.
  19. } Конец условия if для символа новой строки.
  20. if(c == '\n') Если текущий символ является символом новой строки (символом \n), то...
  21. fputc('\n', _out); Выводит символ новой строки на стандартный вывод.
  22. i = 0; Устанавливает значение переменной i равным 0.
  23. p = &s[0]; Устанавливает указатель p на первый элемент массива s.
  24. } Конец цикла while.
  25. int main(void){ Определяет функцию main, которая не принимает аргументов.
  26. out_in_words(stdout, stdin); Вызывает функцию out_in_words, передавая ей аргументы stdout (стандартный вывод) и stdin (стандартный ввод).
  27. return 0; Завершает программу и возвращает значение 0. Код, представленный в этом списке, выполняет задачу, указанную в вопросе - он выводит на стандартный вывод все слова из ввода, которые содержат шесть или более букв.

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


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

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

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы