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

В строке, введенной пользователем посчитать: количество слов; сколько раз встречается слово "goe"; поменять местами первое и последнее слово в этой строке. Язык программирования…

Запрос пользователя

В строке, введенной пользователем посчитать: количество слов; сколько раз встречается слово "goe"; поменять местами первое и последнее слово в этой строке. Язык программирования С++. Консоль. Windows.

Ответ нейросети
14 мая 2025 18:45

Конечно, я подготовлю для вас подробное решение задачи на языке C++ с пошагными объяснениями, чтобы вы могли понять каждую часть кода.


Задача:

Ваша программа должна:

  1. Ввести строку с консоли.
  2. Подсчитать:
    • Общее количество слов.
    • Сколько раз встречается слово "goe" (регистр учитываем, например, только "goe").
  3. Поменять местами первое и последнее слово в строке.
  4. Вывести результаты и изменённую строку.

Решение по шагам:

  1. Ввод строки
  2. Разделение строки на слова (используя stringstream)
  3. Подсчёт слов и количества "goe"
  4. Запоминание первого и последнего слова для обмена
  5. Обмен местами
  6. Вывод результатов

Полный код с объяснениями:

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;

int main() {
    // 1. Объявляем переменную для хранения строки
    string line;
    
    // 2. Ввод строки с консоли
    cout << "Введите строку: ";
    getline(cin, line);
    
    // 3. Создаём поток для разбивки строки на слова
    stringstream ss(line);
    
    vector<string> words; // для хранения слов
    string word;
    
    int totalWords = 0;       // общее количество слов
    int countGoe = 0;         // количество вхождений слова "goe"
    
    // 4. Разделение строки и подсчёт
    while (ss >> word) {
        words.push_back(word);
        totalWords++;
        if (word == "goe") {   // проверка слова
            countGoe++;
        }
    }
    
    // Проверка, что есть хотя бы одно слово для обмена
    if (totalWords > 1) {
        // 5. Меняем первое и последнее слово местами
        swap(words[0], words[totalWords - 1]);
    }
    
    // 6. Вывод результатов
    cout << "Общее количество слов: " << totalWords << endl;
    cout << "Количество встреч слов " << "goe" << ": " << countGoe << endl;
    
    // 7. Восстановим строку из слов
    cout << "Изменённая строка: ";
    for (size_t i = 0; i < words.size(); ++i) {
        cout << words[i];
        if (i != words.size() - 1) {
            cout << " ";
        }
    }
    cout << endl;
    
    return 0;
}

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

  • Вы вводите строку через getline(cin, line);.
  • Создаёте поток stringstream для разбивки строки на слова.
  • Проходите по словам, считая их и одновременно проверяя, равно ли слово "goe".
  • После получения всех слов, меняете местами первое и последнее слово с помощью swap.
  • В конце выводите количество слов, количество встреч слова "goe" и новую строку с изменённым порядком слов.

Если у вас есть дополнительные вопросы или нужны разъяснения по конкретной части — скажите!