Подсчитать количество слов, нечетной длины, найти частоту вхождения букв и удалить текст в круглых скобках - C (СИ)

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

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

С клавиатуры вводится строка . Разработать программу , которая реализует указанные действия . а ) подсчитывает количество слов , которые имеют нечетную длину ; б) выводит на экран частоту вхождения каждой буквы ; в) удаляет текст размещен в круглых скобках.

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. unsigned count_words_odd(const char* s);
  5. void  print_repchar(FILE* _out, const char* s);
  6. char* str_rem(char* s, char fc, char lc);
  7.  
  8. int main(void){
  9.     char s[] = "lang (wolf), cat, dog, (bat), (bea), tiger, (leon), (bars)";
  10.  
  11.     printf("count words odd: %u\n", count_words_odd(s));
  12.     print_repchar(stdout, s);
  13.     puts(s);
  14.     puts( str_rem(s, '(', ')') );
  15.     return 0;
  16. }
  17.  
  18. //кол-во слов, которые имеют нечетную длину
  19. unsigned count_words_odd(const char* s){
  20.     unsigned i = 0, n = 0;
  21.     do {
  22.         if(isalnum(*s))
  23.             ++i;
  24.         else if(i > 0){
  25.             if(i & 1)
  26.                 ++n;
  27.             i = 0;
  28.         }
  29.     } while(*s++ != '\0');
  30.     return n;
  31. }
  32.  
  33. //выводит на экран частоту вхождения каждой буквы
  34. void print_repchar(FILE* _out, const char* s){
  35.     int i;
  36.     unsigned int abc[26];
  37.  
  38.     memset(abc, 0, sizeof(abc));
  39.     while(*s){
  40.         i = toupper(*s);
  41.         if(i >= 'A' && i <= 'Z')
  42.             ++abc[i - 'A'];
  43.         ++s;
  44.     }
  45.  
  46.     for(i = 0; i < 26; ++i){
  47.         if(abc[i] > 0)
  48.             fprintf(_out, "%C(%u)\n", (char)(i + 'A'), abc[i]);
  49.     }
  50.     putc('\n', _out);
  51. }
  52.  
  53. //удаляет текст размещен в круглых скобках
  54. char* str_rem(char* s, char fc, char lc){
  55.     char* i, *p, *t = s;
  56.     while(*s && (*s != fc))
  57.         ++s;
  58.  
  59.     for(p = s; *s; *s = *p){
  60.         if(*p == fc){
  61.             i = p + 1;
  62.             while(*i && (*i != lc))
  63.                 ++i;
  64.            
  65.             if(*i == lc){
  66.                 ++s;
  67.                 p = i;
  68.                 continue;
  69.             }
  70.         }
  71.         ++s;
  72.         ++p;
  73.     }
  74.     return t;
  75. }

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

  1. В функции count_words_odd происходит подсчет слов, которые имеют нечетную длину.
  2. В функции print_repchar выводится на экран частота вхождения каждой буквы.
  3. В функции str_rem удаляется текст, размещенный в круглых скобках.

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


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

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

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

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

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

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