1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
//clang Разбить строку на слова и посчитать число слов вывести слова на экран вручную #include <iostream> #include <cstring> //Для strlen using namespace std; int main(){ const int N = 256; //Максимальная длина строки const char *S = "This is,.!a! test! string "; //Тестовая строка const char *SEPARATORS = " ,.!"; //Указатель на массив разделителей int count = 0; //счётчик слов cout << S << "\n\n"; //Выводим оригинальную строку на экран int cursor = 0; //курсор для перемещения по строке char ch = S[0]; //Подбираемый из строки символ bool is_separator = false; //основной признак символа-разделителя int num_separator = -1; //Счётчик подряд идущих разделителей /*НАЧАЛО ЦИКЛА, ВЫБИРАЮЩЕГО СЛОВА ИЗ СТРОКИ*/ while (ch){ /*если встреченный символ не относится к разделителям*/ if (!is_separator){ cout << ch ; //то выводим его на экран num_separator = -1; //сбрасываем счётчик разделителей } else { if (!num_separator) { cout << '\n'; //в противном случае фиксируем, что начинается новое слово count++; //увеличиваем счётчик слов } } cursor++; //Переходим к новому символу строки ch = S[cursor]; //Запоминаем символ в переменную ch /*ПРОВЕРКА СИМВОЛА НА РАЗДЕЛИТЕЛЬ*/ for (int i=0; i<strlen(SEPARATORS); i++){ if (ch == SEPARATORS[i]) { //Если считанный символ оказался разделителем is_separator = true; //Обозначаем, что текущий символ - разделительного характера num_separator++; //наращиваем счётчик разделителей break; //принудительно выскакиванием из цикла for } else is_separator = false; //Если считанный символ часть слова, то обозначаем, что он не разделитель } //конец цикла for } //Конец цикла while cout << "\n\nResult: " << count << " words" << '\n'; cin.get(); } |
1 |
const char *SEPARATORS = " ,.!\n\t\\v\\'\?"; |
как посчитать количество чисел в заданном тексте?