Подсчитать количество слов, нечетной длины, найти частоту вхождения букв и удалить текст в круглых скобках - C (СИ)
Формулировка задачи:
С клавиатуры вводится строка . Разработать программу , которая реализует указанные действия .
а ) подсчитывает количество слов , которые имеют нечетную длину ;
б) выводит на экран частоту вхождения каждой буквы ;
в) удаляет текст размещен в круглых скобках.
Решение задачи: «Подсчитать количество слов, нечетной длины, найти частоту вхождения букв и удалить текст в круглых скобках»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- unsigned count_words_odd(const char* s);
- void print_repchar(FILE* _out, const char* s);
- char* str_rem(char* s, char fc, char lc);
- int main(void){
- char s[] = "lang (wolf), cat, dog, (bat), (bea), tiger, (leon), (bars)";
- printf("count words odd: %u\n", count_words_odd(s));
- print_repchar(stdout, s);
- puts(s);
- puts( str_rem(s, '(', ')') );
- return 0;
- }
- //кол-во слов, которые имеют нечетную длину
- unsigned count_words_odd(const char* s){
- unsigned i = 0, n = 0;
- do {
- if(isalnum(*s))
- ++i;
- else if(i > 0){
- if(i & 1)
- ++n;
- i = 0;
- }
- } while(*s++ != '\0');
- return n;
- }
- //выводит на экран частоту вхождения каждой буквы
- void print_repchar(FILE* _out, const char* s){
- int i;
- unsigned int abc[26];
- memset(abc, 0, sizeof(abc));
- while(*s){
- i = toupper(*s);
- if(i >= 'A' && i <= 'Z')
- ++abc[i - 'A'];
- ++s;
- }
- for(i = 0; i < 26; ++i){
- if(abc[i] > 0)
- fprintf(_out, "%C(%u)\n", (char)(i + 'A'), abc[i]);
- }
- putc('\n', _out);
- }
- //удаляет текст размещен в круглых скобках
- char* str_rem(char* s, char fc, char lc){
- char* i, *p, *t = s;
- while(*s && (*s != fc))
- ++s;
- for(p = s; *s; *s = *p){
- if(*p == fc){
- i = p + 1;
- while(*i && (*i != lc))
- ++i;
- if(*i == lc){
- ++s;
- p = i;
- continue;
- }
- }
- ++s;
- ++p;
- }
- return t;
- }
Объяснение кода листинга программы
- В функции
count_words_odd
происходит подсчет слов, которые имеют нечетную длину. - В функции
print_repchar
выводится на экран частота вхождения каждой буквы. - В функции
str_rem
удаляется текст, размещенный в круглых скобках.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д