Как при выводе на экран игнорировать слова определённой длины? - 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
, а также выводится на экран последовательность символов, которая была пропущена. - Если символ не является знаком препинания, пробелом или нулевым символом, то он выводится на экран.
- Если символ является знаком препинания, пробелом или нулевым символом, то происходит обновление счетчиков
- Цикл продолжается до тех пор, пока не будет достигнут конец строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д