Как вывести на экран все слова из исходной строки, в которых символ, указанный пользователем, встречается не менее указанного количества раз?
#include <iostream> #include <string> #include <vector> using namespace std; vector<string> getWordsWithSymbol(const string& str, char symbol, int count) { vector<string> words; string word; int symbolCount = 0; for (char c : str) { if (c != ' ') { word += c; if (c == symbol) { symbolCount++; } } else { if (symbolCount >= count) { words.push_back(word); } word = ""; symbolCount = 0; } } if (symbolCount >= count) { words.push_back(word); } return words; } int main() { string sentence; char symbol; int count; cout << "Введите предложение: "; getline(cin, sentence); cout << "Введите символ: "; cin >> symbol; cout << "Введите минимальное количество повторений символа: "; cin >> count; vector<string> wordsWithSymbol = getWordsWithSymbol(sentence, symbol, count); cout << "Слова, в которых символ '" << symbol << "' встречается не менее " << count << " раз:\n"; for (const string& word : wordsWithSymbol) { cout << word << endl; } return 0; }
Если ваш код успешно компилируется в C++, то вам не о чем беспокоиться. Если ваш преподаватель настаивает на дальнейшей переписке кода, возможно, стоит уточнить, до какой степени он хочет, чтобы вы это делали. Первая идея для улучшения кода - заменить ASCIIZ строки на использование класса std::string. Попробуйте переписать весь код включая следующую функцию: void output_res(char* mas_str, int* arr, char character, int occurrences) на void output_res(std::string mas_str, int* arr, char character, int occurrences) Также замените функции strtok, strlen и printf на соответствующие методы класса std::string или оператор << класса std::cout. Это будет первым шагом для улучшения кода и сделает его более понятным и читаемым. Если ваш преподаватель все еще не удовлетворен, вернитесь сюда, и мы поможем вам дальше - например, с использованием лямбда-функций и других новых возможностей C++11 и выше.