Как при выводе на экран игнорировать слова определённой длины? - C (СИ)
Формулировка задачи:
На вход в программе даётся текст (например "Hello, world! Hi"). Как сделать так, чтобы программа выводила только те слова, в которых кол-во символов больше числа, в значении некой переменной?
Например, в данном случае ("Hello, world! Hi"), при какой-нибудь N = 2, программа бы выводила только "Hello, world!".
P.S: Нельзя использовать string.h
Решение задачи: «Как при выводе на экран игнорировать слова определённой длины?»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <ctype.h> void prf(char *s, int n) { int i; for(i = 0; i < n ;i++, s++) { putchar(*s); } } int main() { char *s = (char *) malloc(20); gets(s); int n = 2; scanf("%d", &n); int z = 0; int m = 0; while(1) { if(ispunct(*s) || isspace(*s) || *s == '\0') { z = (m == 0) ? z : z - 1; if(z > n) {prf(s-z, z);putchar(*s);} z = 0; m++; if(*s == '\0') break; } s++; z++; } }
Объяснение кода листинга программы
В этом коде реализована функция, которая выводит на экран строку, игнорируя слова определенной длины.
- Сначала объявляются необходимые переменные:
s
- указатель на строку, которую необходимо вывести;n
- длина слова, которое необходимо игнорировать;z
- количество слов, которые уже были пропущены;m
- количество слов, которые уже были выведены.
- Затем происходит чтение строки и ее длины с помощью функций
gets
иscanf
. - Далее в цикле происходит проверка каждого символа строки:
- Если символ является знаком препинания, пробелом или нулевым символом, то происходит обновление счетчиков
z
иm
, а также выводится на экран последовательность символов, которая была пропущена. - Если символ не является знаком препинания, пробелом или нулевым символом, то он выводится на экран.
- Если символ является знаком препинания, пробелом или нулевым символом, то происходит обновление счетчиков
- Цикл продолжается до тех пор, пока не будет достигнут конец строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д