Подсчет слов во введенной строке - 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;
}

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

  1. В функции vowels_count мы используем статическую переменную VOW, которая содержит все гласные буквы в нижнем регистре.
  2. Затем мы инициализируем переменную cnt для подсчета гласных букв, а pos для хранения позиции текущей гласной буквы в строке s.
  3. В цикле while мы находим следующую гласную букву в строке s с помощью метода find_first_of и увеличиваем счетчик cnt на 1.
  4. Затем мы увеличиваем pos на 1, чтобы пропустить текущую гласную букву при следующем поиске.
  5. В основной функции main мы используем std::getline для считывания строки от пользователя и сохраняем ее в переменной buf.
  6. Мы создаем объект istringstream из строки buf для разбиения ее на слова.
  7. Затем мы инициализируем счетчик cnt для подсчета слов, удовлетворяющих условию, и переменную c для подсчета общего количества слов.
  8. В цикле while мы считываем слова из ist и проверяем, содержит ли каждое слово достаточное количество гласных букв с помощью функции vowels_count.
  9. Если условие выполняется, мы выводим слово на экран и увеличиваем cnt на 1.
  10. Мы также увеличиваем c на 1 после каждого слова.
  11. После выхода из цикла while мы выводим количество слов, удовлетворяющих условию, и общее количество слов.
  12. Затем мы выводим сообщение Count all words и общее количество слов.
  13. В конце программы мы возвращаем 0, чтобы указать, что программа успешно завершилась.

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


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

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

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