Подсчет слов во введенной строке - C (СИ)
Формулировка задачи:
Как в этой сделать чтоб считала сколько слов ввели?
#include <iostream> #include <string> #include <sstream> int vowels_count(const std::string & s){ static const std::string VOW("AaEeIiOoUuYy"); int cnt(0), pos(0); while ( ( pos = s.find_first_of(VOW, pos) ) != std::string::npos ){ ++cnt; ++pos; } return cnt; } int main(){ const int NEEDED(3); std::string buf; while ( std::cout << "String: " && std::getline(std::cin, buf) && ! buf.empty() ){ std::istringstream ist(buf); int cnt(0); while ( ist >> buf ) if ( vowels_count(buf) >= NEEDED && ++cnt ) std::cout << buf << std::endl; std::cout << cnt << " words." << std::endl; } return 0; }
Решение задачи: «Подсчет слов во введенной строке»
textual
Листинг программы
#include <iostream> #include <string> #include <sstream> int vowels_count(const std::string & s){ static const std::string VOW("AaEeIiOoUuYy"); int cnt(0), pos(0); while ( ( pos = s.find_first_of(VOW, pos) ) != std::string::npos ){ ++cnt; ++pos; } return cnt; } int main(){ const int NEEDED(3); std::string buf; size_t c; while ( std::cout << "String: " && std::getline(std::cin, buf) && ! buf.empty() ){ std::istringstream ist(buf); int cnt(0); c = 0; while ( ist >> buf ){ if ( vowels_count(buf) >= NEEDED && ++cnt ) std::cout << buf << std::endl; ++c; } std::cout << cnt << " words." << std::endl; std::cout << "\n\nCount all words = " << c << '\n'; } return 0; }
Объяснение кода листинга программы
- В функции
vowels_count
мы используем статическую переменнуюVOW
, которая содержит все гласные буквы в нижнем регистре. - Затем мы инициализируем переменную
cnt
для подсчета гласных букв, аpos
для хранения позиции текущей гласной буквы в строкеs
. - В цикле
while
мы находим следующую гласную букву в строкеs
с помощью методаfind_first_of
и увеличиваем счетчикcnt
на 1. - Затем мы увеличиваем
pos
на 1, чтобы пропустить текущую гласную букву при следующем поиске. - В основной функции
main
мы используемstd::getline
для считывания строки от пользователя и сохраняем ее в переменнойbuf
. - Мы создаем объект
istringstream
из строкиbuf
для разбиения ее на слова. - Затем мы инициализируем счетчик
cnt
для подсчета слов, удовлетворяющих условию, и переменнуюc
для подсчета общего количества слов. - В цикле
while
мы считываем слова изist
и проверяем, содержит ли каждое слово достаточное количество гласных букв с помощью функцииvowels_count
. - Если условие выполняется, мы выводим слово на экран и увеличиваем
cnt
на 1. - Мы также увеличиваем
c
на 1 после каждого слова. - После выхода из цикла
while
мы выводим количество слов, удовлетворяющих условию, и общее количество слов. - Затем мы выводим сообщение
Count all words
и общее количество слов. - В конце программы мы возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д