Найти все слова текста, в которых буквы ‘a’ и ‘b’ встречаются максимальное число раз - C (СИ)
Формулировка задачи:
помогите написать программу на Си
Ввести массив строк символов (текст). Найти все слова текста, в которых буквы
‘a’ и ‘b’ встречаются максимальное число раз. Словами считать группы символов,
разделенные одним или несколькими пробелами.
заранее спасибо)
Решение задачи: «Найти все слова текста, в которых буквы ‘a’ и ‘b’ встречаются максимальное число раз»
textual
Листинг программы
- #include "stdafx.h" // ЕСли не в VC++, то вроде надо это убрать
- #include<stdio.h>
- #include<string.h>
- #include<conio.h>
- #include <windows.h>
- using namespace std;
- int main()
- {
- 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;
- char input_string[500];
- gets(input_string); /* Читает строку с клавиатуры */
- //***************************************************************************************************************************
- // Перебираем строку от нулевого до последнего
- for (int i=0;i<strlen(input_string);i++)
- {
- // Если это не нулевой символ И не пробел И предыдущий символ = пробел
- if ((i!=0) && (input_string[i]!=' ') && (input_string[i-1]==' '))
- {
- position_of_max_a=i; // position_of_max_а - это временный указатель. Окончательно на нужно слово будет указывать position_of_max_а_last
- position_of_max_b=i;
- }
- // Проверяем на : пробел , "а", "в"
- switch(input_string[i])
- {
- case ' ':
- // ЕСли счетчик элементов "а" больше максимального значения, значит максимальное значение этот счетчик
- if (max_a<count_a) {
- max_a=count_a;
- position_of_max_a_last=position_of_max_a; // position_of_max_a_last - это указатель на начало слова, где максимально "а"
- count_a=0;
- }
- // ЕСли счетчик элементов "в" больше максимального значения, значит максимальное значение этот счетчик
- if (max_b<count_b) {
- max_b=count_b;
- position_of_max_b_last=position_of_max_b;// position_of_max_b_last - это указатель на начало слова, где максимально "b"
- count_b=0;
- }
- break;
- case 'a':
- ++count_a; // если мы набрели на "а" , то прибавим 1 к счетчику
- //ЕСли это последний элемент И счетчик "а" больше чем максимальное значение ...
- if ( (i==(strlen(input_string)-1)) && (max_a<count_a) )
- {
- max_a=count_a;
- position_of_max_a_last=position_of_max_a;
- count_a=0;
- }
- break;
- case 'b':
- ++count_b;
- if ((i==(strlen(input_string)-1)) && (max_b<count_b)) {
- max_b=count_b;
- position_of_max_b_last=position_of_max_b;
- count_b=0;
- }
- break;
- }
- }
- // Если там был такой элемент , значит его max изменялось и оно больше нуля
- if (max_a>0)
- {
- printf("\nThe word, where max count 'a' is ");
- for (int i=position_of_max_a_last;i<strlen(input_string); i++){
- if (input_string[i]==' ')
- break;
- printf("%c", input_string[i] );
- }
- }
- if (max_b>0)
- {
- printf("\nThe word, where max count 'b' is ");
- for (int i=position_of_max_b_last;i<strlen(input_string); i++){
- if (input_string[i]==' ')
- break;
- printf("%c", input_string[i] );
- }
- }
- getch();
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д