Как можно реализовать этот код на языке С++?

Как вывести на экран все слова из исходной строки, в которых символ, указанный пользователем, встречается не менее указанного количества раз?
  • 22 ноября 2023 г. 19:40
Ответы на вопрос 2
#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 и выше.
Похожие вопросы