Определение количества вхождений заданного символа в заданной строке - C (СИ)
Формулировка задачи:
помогите разобраться с этим заданием. Нужно дополнить код функциями, чтобы выполнялась задача: определение количества заданного символа в заданной строке
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int how_many(char ch, char sentence[])
- {
- int count = 0;
- int position;
- // **********************************************************************
- // **********************************************************************
- return count;
- }
- void clean_up(char ch)
- {
- while (ch != EOF && ch != '\n')
- ch = getchar();
- }
- int main()
- {
- char ch;
- char sentence[1024];
- do {
- printf("Enter a character: ");
- ch = getchar();
- clean_up(ch);
- if (ch < ' ' || ch > '~') {
- printf("That was not a legal character. Try again.\n");
- }
- } while (ch < ' ' || ch > '~');
- printf("Enter a sentence: ");
- fgets(sentence, 1024, stdin);
- printf("The character '%c' is in the sentence %d times.\n", ch, how_many(ch, sentence));
- return 0;
- }
Решение задачи: «Определение количества вхождений заданного символа в заданной строке»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int how_many(char ch, char sentence[])
- {
- int count = 0;
- count = (sentence = strchr(sentence, ch)) ?
- 1 + how_many(ch, sentence + 1) : 0;
- return count;
- }
- void clean_up(char ch)
- {
- while (ch != EOF && ch != '\n')
- ch = getchar();
- }
- int main()
- {
- char ch;
- char sentence[1024];
- do {
- printf("Enter a character: ");
- ch = getchar();
- clean_up(ch);
- if (ch < ' ' || ch > '~') {
- printf("That was not a legal character. Try again.\n");
- }
- } while (ch < ' ' || ch > '~');
- printf("Enter a sentence: ");
- fgets(sentence, 1024, stdin);
- printf("The character '%c' is in the sentence %d times.\n", ch, how_many(ch, sentence));
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода, строками и условиями.
- Определяем функцию how_many, которая принимает символ и строку в качестве параметров и возвращает количество вхождений заданного символа в строке.
- Создаем переменную count, которая будет хранить количество вхождений.
- При помощи функции strchr ищем первое вхождение заданного символа в строке и увеличиваем count на 1.
- Рекурсивно вызываем функцию how_many для оставшейся части строки, начиная с символа, следующего за найденным входом.
- Возвращаем count.
- Определяем функцию clean_up, которая считывает символы до конца строки или до конца файла и удаляет их из буфера.
- В бесконечном цикле запрашиваем у пользователя ввод символа и очищаем буфер от лишних символов.
- Проверяем, является ли введенный символ корректным. Если нет, выводим сообщение об ошибке и просим ввести символ заново.
- После ввода корректного символа запрашиваем у пользователя ввод строки.
- Считываем строку с помощью функции fgets.
- Вызываем функцию how_many с введенной строкой и заданным символом.
- Выводим количество вхождений заданного символа в строке.
- Завершаем программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д