1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #include <iostream> // подключение библиотеки ввода-вывода
- #include <string> // подключение библиотеки для работы со строками
- using namespace std; // пространство имён
- int main(){
- string str; // вводимая строка
- char letter; // искомая буква
- int count = 0; // счётчик для количества подсчитанных слов
- int space = 0; // счётчик для проверки на пробелы в строке
- bool c = false; // переменная проверки на разделитель
- string word; // строка для слова
- int start = 0, finish = 0; // значения начала и конца слова
- cout << "Input string: " << endl;
- getline(cin, str); // ввод строки
- // проверка на пустоту строки
- if (str.empty()){ // если строка пуста, то
- cout << "String can't be empty" << endl; // вывод сообщения об ошибке
- exit(0); // завершение программы
- }
- else { // иначе проверка на пробелы
- for (int i = 0; i < str.size(); i++){ // цикл на всю строку
- if (str[i] == ' '){ // если символ является пробелом, то
- space++; // увеличиваем счётчик
- }
- }
- if (space == str.size()) { // если количество пробелов равно размеру строки, то
- cout << "String have only spaces." << endl; // вывод сообщения об ошибке
- exit(0); // завершение программы
- }
- }
- cout << "Input letter: " << endl;
- letter = getchar(); // ввод буквы
- // проверка на пустоту вводимого символа
- if ((letter == '\n') || (letter == ' ')){ // если символ является переходом на новую строку или пробелом, то
- cout << "Letter can't be empty" << endl; // вывод сообщения об ошибке
- exit(0); // завершение программы
- }
- for (int i = 0; i < str.size(); i++){ // цикл на полную строку
- if (str[i] == ' '){ // если текущий символ является пробелом, то
- finish = i; // объявляем концом слова значение i
- word = str.substr(start, (finish - start)); // присваиваем символы от start до finish переменной word
- for (int j = 0; j < word.size(); j++){ // цикл на слово
- if (word[j] == letter){ // если в слове есть искомая буква, то
- count++; // увеличиваем счётчик
- break; // останавливаем цикл по слову
- }
- }
- start = finish + 1; // изменяем значение start на finish + 1 для пропуска пробела
- c = true; // меняем значение c на true, так как в строке есть пробелы
- }
- }
- // проверка последнего слова, которое не вошло в основной цикл
- word = str.substr(start, (finish - start));
- for (int j = 0; j < word.size(); j++){
- if (word[j] == letter){
- count++;
- break;
- }
- }
- if (c == false){ // если в строке нет пробелов, то
- for (int i = 0; i < str.size(); i++){ // цикл на строку
- if (str[i] == letter){ // если символ является искомой буквой
- count++;// увеличиваем счётчик
- break; // останавливаем цикл по слову
- }
- }
- }
- cout << "Count of words: " << count << endl; // вывод счётчика
- return 0; // успешное завершение программы
- }
|