Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3013238
А
Аноним
25 марта 2025 10:03 · публичный вопрос
А
Аноним

даны две строки: s1 и s2 .определить количество вхождений строки s2 в строку s1. Написать программу на языке с++

Ответ нейросети
25 марта 2025 10:03

Для решения задачи по определению количества вхождений строки s2 в строку s1 на языке C++, мы можем воспользоваться стандартными средствами работы со строками. Для начала, давайте разберемся в компоненте задачи и предложим соответствующий код.

Шаги решения

  1. Ввод строк: Необходимо получить строки s1 и s2 от пользователя.
  2. Поиск вхождений: Используем метод поиска подстроки в строке. Вычисляем количество раз, когда строка s2 встречается в строке s1.
  3. Вывод результата: Выводим количество вхождений на экран.

Пример кода на C++

#include <iostream>
#include <string>

int countOccurrences(const std::string& s1, const std::string& s2) {
    if (s2.empty()) return 0; // Если s2 пустая, количество вхождений 0
    int count = 0;
    size_t pos = 0;

    while ((pos = s1.find(s2, pos)) != std::string::npos) {
        count++;      // Увеличиваем счетчик
        pos += s2.length(); // Переходим к следующему символу после найденного вхождения
    }
    return count;
}

int main() {
    std::string s1, s2;
    
    // Ввод строк
    std::cout << "Введите строку s1: ";
    std::getline(std::cin, s1);
    std::cout << "Введите строку s2: ";
    std::getline(std::cin, s2);

    // Подсчет вхождений
    int occurrences = countOccurrences(s1, s2);
    
    // Вывод результата
    std::cout << "Количество вхождений строки '" << s2 << "' в строку '" << s1 << "': " << occurrences << std::endl;

    return 0;
}

Объяснение кода

  • #include <iostream> и #include <string>: Эти директивы подключения позволяют использовать стандартные библиотеки ввода-вывода и работу со строками.

  • Функция countOccurrences:

    • Принимает две строки s1 и s2.
    • Проверяет, не пустая ли строка s2. Если пуста, возвращается 0, так как пустая строка не может считаться.
    • Использует цикл while, чтобы находить все вхождения s2 в s1:
      • s1.find(s2, pos) ищет s2 в s1, начиная с позиции pos.
      • Если вхождение найдено (позиция не равна std::string::npos), увеличивается счетчик count, и pos обновляется для поиска следующего вхождения.
  • main:

    • Получает ввод от пользователя для обеих строк.
    • Вызывает функцию countOccurrences для подсчета вхождений и выводит результат.

Как запускать программу

  1. Скопируйте код в файл с расширением .cpp, например, count_occurrences.cpp.
  2. Скомпилируйте программу с помощью компилятора, например, в командной строке можно использовать: g++ count_occurrences.cpp -o count_occurrences.
  3. Запустите программу, введя необходимые строки, и вы увидите количество вхождений.

Этот код будет работать для всех строк, введенных пользователем, и продемонстрирует, как можно эффективно находить количество вхождений одной строки в другой.