Найти все слова текста, в которых буквы ‘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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д