Посчитать количество слов, которые начинаются с одной буквы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Прошу помочь в решении следующих задач:

Написать программу ,считывающую строку текста и печатающую таблицу,показывающую ,сколько раз в тексте встречаются слова ,начинающиеся с одной и той же буквы.

#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;
}
Не могу понять , как составить цикл по проверке слов , начинающихся на одну и ту же букву. Прошу обойтись без сообщений в духе "почитай про такую-то функцию и поймешь". Просто на данный момент ситуация такая , что решить данные задачи сам я не в состоянии. Надеюсь на вашу поддержку и понимание. P.S.Решить надо на Си. (желательно без применения с++)

Решение задачи: «Посчитать количество слов, которые начинаются с одной буквы»

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;
}

Объяснение кода листинга программы

В этом коде:

  1. Объявлены и инициализированы переменные:
    • str - строка, в которой нужно найти слова, начинающиеся с одной буквы.
    • p - указатель, который будет последовательно указывать на каждое слово в строке str.
    • map - массив размером 127, в котором будут подсчитываться слова, начинающиеся с каждой буквы. Начальное значение каждого элемента массива устанавливается равным 0.
    • i - переменная для подсчёта количества слов, начинающихся с каждой буквы.
    • mapSize - размер массива map.
  2. В цикле for происходит разделение строки str на слова с помощью функции strtok. Каждое слово добавляется к соответствующему элементу массива map с помощью оператора ++.
  3. В цикле for происходит проверка каждого элемента массива map. Если элемент соответствует букве и его значение больше 0, то выводится на экран.
  4. В конце программы вызывается функция _getch, которая ожидает нажатия клавиши, и программа завершается с возвращаемым значением 0.

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


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

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

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