Найти все слова текста, в которых буквы ‘a’ и ‘b’ встречаются максимальное число раз - C (СИ)

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

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

помогите написать программу на Си Ввести массив строк символов (текст). Найти все слова текста, в которых буквы ‘a’ и ‘b’ встречаются максимальное число раз. Словами считать группы символов, разделенные одним или несколькими пробелами. заранее спасибо)

Решение задачи: «Найти все слова текста, в которых буквы ‘a’ и ‘b’ встречаются максимальное число раз»

textual
Листинг программы
  1. #include "stdafx.h" // ЕСли не в VC++, то вроде надо это убрать
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<conio.h>
  5. #include <windows.h>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11. int count_a=0, count_b=0, max_a=0, max_b=0, position_of_max_a_last=0, position_of_max_b_last=0, position_of_max_a=0, position_of_max_b=0;
  12. char input_string[500];
  13.  
  14.  
  15. gets(input_string); /* Читает строку с клавиатуры */
  16.  
  17.  
  18. //***************************************************************************************************************************
  19. // Перебираем строку от нулевого до последнего
  20. for (int i=0;i<strlen(input_string);i++)
  21. {
  22.  
  23. // Если это не нулевой символ И не пробел И предыдущий символ = пробел
  24.     if  ((i!=0) && (input_string[i]!=' ') && (input_string[i-1]==' '))
  25.     {
  26.     position_of_max_a=i; // position_of_max_а - это временный указатель. Окончательно на нужно слово будет указывать position_of_max_а_last
  27.     position_of_max_b=i;
  28.     }
  29.  
  30.  
  31. // Проверяем на : пробел , "а", "в"            
  32.     switch(input_string[i])
  33.     {
  34.     case ' ':
  35. // ЕСли счетчик элементов "а" больше максимального значения, значит максимальное значение этот счетчик
  36.         if (max_a<count_a) {
  37.         max_a=count_a;
  38.         position_of_max_a_last=position_of_max_a; // position_of_max_a_last - это указатель на начало слова, где максимально "а"
  39.         count_a=0;
  40.         }
  41.  
  42. // ЕСли счетчик элементов "в" больше максимального значения, значит максимальное значение этот счетчик
  43.         if (max_b<count_b) {
  44.         max_b=count_b;
  45.         position_of_max_b_last=position_of_max_b;// position_of_max_b_last - это указатель на начало слова, где максимально "b"
  46.         count_b=0;
  47.         }
  48.     break;
  49.  
  50.  
  51.     case 'a':
  52.  
  53.     ++count_a; // если мы набрели на "а" , то прибавим 1 к счетчику
  54.  
  55.     //ЕСли это последний элемент И счетчик "а" больше чем максимальное значение ...
  56.     if ( (i==(strlen(input_string)-1)) && (max_a<count_a) )
  57.     {
  58.         max_a=count_a;
  59.         position_of_max_a_last=position_of_max_a;
  60.         count_a=0;
  61.         }
  62.  
  63.     break;
  64.  
  65.  
  66.  
  67.     case 'b':
  68.  
  69.     ++count_b;
  70.  
  71.  
  72.     if ((i==(strlen(input_string)-1)) && (max_b<count_b)) {
  73.         max_b=count_b;
  74.         position_of_max_b_last=position_of_max_b;
  75.         count_b=0;
  76.         }
  77.  
  78.     break;
  79.  
  80.  
  81.  
  82. }  
  83.  
  84. }
  85.  
  86.  
  87.  
  88. // Если там был такой элемент , значит его max изменялось и оно больше нуля
  89. if (max_a>0)
  90. {
  91. printf("\nThe word, where max count 'a' is ");
  92. for (int i=position_of_max_a_last;i<strlen(input_string); i++){
  93.             if (input_string[i]==' ')
  94.             break;
  95.     printf("%c", input_string[i] );
  96.     }
  97. }
  98.        
  99.  
  100.  
  101. if (max_b>0)
  102. {
  103. printf("\nThe word, where max count 'b' is ");
  104. for (int i=position_of_max_b_last;i<strlen(input_string); i++){
  105.             if (input_string[i]==' ')
  106.             break;
  107.     printf("%c", input_string[i] );
  108.     }
  109. }
  110.        
  111.        
  112.    
  113. getch();
  114.  
  115. return 0;
  116.  
  117. }

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


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

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

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

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

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

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