Посчитать количество слов, которые начинаются с одной буквы - C (СИ)
Формулировка задачи:
Доброго времени суток. Прошу помочь в решении следующих задач:
Не могу понять , как составить цикл по проверке слов , начинающихся на одну и ту же букву.
Прошу обойтись без сообщений в духе "почитай про такую-то функцию и поймешь". Просто на данный момент ситуация такая , что решить данные задачи сам я не в состоянии. Надеюсь на вашу поддержку и понимание.
P.S.Решить надо на Си. (желательно без применения с++)
Написать программу ,считывающую строку текста и печатающую таблицу,показывающую ,сколько раз в тексте встречаются слова ,начинающиеся с одной и той же буквы.
#include "stdafx.h" #include "string.h" int main () { int k = 0; char str[] ="Show unnamed handles and mappings"; char *p; for (p = strtok(str," "); p ; p = strtok (0," ")) return 0; }
Решение задачи: «Посчитать количество слов, которые начинаются с одной буквы»
textual
Листинг программы
#include "stdafx.h" #include <string.h> #include <conio.h> #include <ctype.h> int main () { char str[] ="Abf vde avfg cvg a", *p = NULL; size_t map[127] = {0}, i, mapSize = sizeof(map) / sizeof(*map); for (p = strtok(str, " "); p; p = strtok(NULL, " ")) { ++map[tolower(*p)]; } for(i = 0; i < mapSize; ++i) { if(isalpha(i) && map[i]) { printf("%c - %u\n", i, map[i]); } } _getch(); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены и инициализированы переменные:
str
- строка, в которой нужно найти слова, начинающиеся с одной буквы.p
- указатель, который будет последовательно указывать на каждое слово в строкеstr
.map
- массив размером 127, в котором будут подсчитываться слова, начинающиеся с каждой буквы. Начальное значение каждого элемента массива устанавливается равным 0.i
- переменная для подсчёта количества слов, начинающихся с каждой буквы.mapSize
- размер массиваmap
.
- В цикле
for
происходит разделение строкиstr
на слова с помощью функцииstrtok
. Каждое слово добавляется к соответствующему элементу массиваmap
с помощью оператора++
. - В цикле
for
происходит проверка каждого элемента массиваmap
. Если элемент соответствует букве и его значение больше 0, то выводится на экран. - В конце программы вызывается функция
_getch
, которая ожидает нажатия клавиши, и программа завершается с возвращаемым значением 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д