Найти все слова текста, в которых буквы ‘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;
 
}

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


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

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

6   голосов , оценка 3.833 из 5
Похожие ответы