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