Подсчитать количество букв «а» в последнем слове последовательности - C (СИ)
Формулировка задачи:
Добрый вечер!
Группы символов, разделенные пробелами и не содержащие пробелы внутри себя, будем называть словами. Подсчитать количество букв «а» в последнем слове данной последовательности.
Решение задачи: «Подсчитать количество букв «а» в последнем слове последовательности»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void trim_end(char *str, char ch)
{
char *ptr = NULL;
size_t size = strlen(str);
ptr = str + size - 1;
while (*ptr == ch && ptr >= str)
{
*ptr-- = '\0';
}
}
size_t character_count(const char *str, const char ch)
{
size_t count = 0u;
while (str && *str)
{
if (*str++ == ch)
{
count++;
}
}
return count;
}
int main()
{
char str[BUFSIZ];
const char ch = 'a';
printf("Please enter string: ");
if (fgets(str, BUFSIZ, stdin))
{
char *last_space = NULL;
trim_end(str, '\n');
last_space = strrchr(str, ' ');
if (last_space == NULL)
{
last_space = str;
}
else
{
last_space++;
}
printf("'%c' = %u\n", ch, character_count(last_space, ch));
}
#ifdef _MSC_VER
system("pause");
#endif
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяются две функции: trim_end и character_count
- Функция trim_end принимает два аргумента: строку и символ. Она обрезает конец строки до первого вхождения указанного символа
- Функция character_count принимает два аргумента: строку и символ. Она подсчитывает количество указанных символов в строке
- В функции main пользователю предлагается ввести строку
- Введенная строка сохраняется в массиве str
- Затем в функции main вызывается функция trim_end для удаления символа новой строки из введенной строки
- В функции main вызывается функция strrchr для поиска последнего пробела в строке
- Если последний пробел не найден, то он считается первым символом строки
- В противном случае, указатель на последний пробел увеличивается на единицу, чтобы пропустить пробел
- Затем вызывается функция character_count для подсчета количества указанных символов в найденной подстроке
- Результат выводится на экран
- В конце программы добавлен вызов функции pause для приостановки выполнения программы до нажатия клавиши Enter в консоли Windows
- Программа завершается возвратом значения 0, что означает успешное выполнение