Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 04 февраля 2026 20:13

Напишите программу на С++ как начинающий, которая выводит самое длинное слово переданной её символьной строки. Слово – это последовательность непробельных символов, ограниченная пробелами или концами строки. Входные данные Входная строка содержит произвольную последовательность символов. Выходные данные Программа должна вывести в первой строке самое длинное слово переданной ей строки, а во второй – длину этого слова. Если слов максимальной длины несколько — вывести первое встретившееся слово максимальной длины. Примеры Входные данные abra cadabra fibra Выходные данные cadabra 7

Ответ нейросети

04 февраля 2026 20:13

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

Цель: понять алгоритм и увидеть рабочий пример кода.

Пошаговый разбор:

  • Идея: разбивать входную строку на слова по пробелам (и другим пробельным эпизодам) и находить самое длинное слово. При равной длине первым встречавшимся словом максимальной длины мы не меняем его — так сохраняем первый максимум.
  • Удобно использовать потоковый подход: считываем строку, затем используем istringstream и оператор >>, который разбивает строку на слова по пробельным символам.
  • Алгоритм:
    1. Прочитать строку s.
    2. Создать istringstream iss(s).
    3. В цикле извлекать слова word: while (iss >> word).
    4. Если длина word больше текущего максимума, обновлять maxWord и maxLen.
    5. Вывести maxWord и maxLen (вторая строка — длина).
  • Сложность: времени O(n), где n — длина входной строки. Память: O(k) для текущего слова.

Пример кода (C++11 и выше):

#include #include #include

int main() { std::string s; if (!std::getline(std::cin, s)) return 0;

std::string word, bestWord;
std::size_t bestLen = 0;

std::istringstream iss(s);
while (iss >> word) {
    if (word.length() > bestLen) {
        bestLen = word.length();
        bestWord = word;
    }
}

std::cout << bestWord << "\n" << bestLen << "\n";
return 0;

}

Как работает на примере:

  • Ввод: "abra cadabra fibra"
  • Слова: abra (4), cadabra (7), fibra (5)
  • Самое длинное: cadabra, длина 7
  • Вывод: cadabra 7

Дополнительные заметки:

  • Если вход пустой или содержит только пробелы, bestWord останется пустой строкой и bestLen — 0, что корректно выводится как пустая строка и 0.
  • Программа поддерживает любые символы в словах кроме пробелов, и считает слова по пробельным разделителям (через istringstream). Если хочешь ограничиться только пробелами, можно реализовать разбор вручную, но текущий вариант проще и надежнее для задач начального уровня.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Напишите программу на С++ как начинающий, которая выводит самое длинное слово переданной её символьной строки. Слово – это последовательность непробельных символов, ограниченная пробелами или концами строки. Входные данные Входная строка содержит произвольную последовательность символов. Выходные данные Программа должна вывести в первой строке самое длинное слово переданной ей строки, а во второй – длину этого слова. Если слов максимальной длины несколько — вывести первое встретившееся слово максимальной длины. Примеры Входные данные abra cadabra fibra Выходные данные cadabra 7
Задача понятна. Ниже даю подробное решение с пошаговым объяснением и готовым кодом на C++, подходящим для уровня начинающего. Цель: понять алгоритм и увидеть рабочий пример кода. Пошаговый разбор: - Идея: разбивать входную строку на слова по пробелам (и другим пробельным эпизодам) и находить самое длинное слово. При равной длине первым встречавшимся словом максимальной длины мы не меняем его — так сохраняем первый максимум. - Удобно использовать потоковый подход: считываем строку, затем используем istringstream и оператор >>, который разбивает строку на слова по пробельным символам. - Алгоритм: 1. Прочитать строку s. 2. Создать istringstream iss(s). 3. В цикле извлекать слова word: while (iss >> word). 4. Если длина word больше текущего максимума, обновлять maxWord и maxLen. 5. Вывести maxWord и maxLen (вторая строка — длина). - Сложность: времени O(n), где n — длина входной строки. Память: O(k) для текущего слова. Пример кода (C++11 и выше): #include #include #include int main() { std::string s; if (!std::getline(std::cin, s)) return 0; std::string word, bestWord; std::size_t bestLen = 0; std::istringstream iss(s); while (iss >> word) { if (word.length() > bestLen) { bestLen = word.length(); bestWord = word; } } std::cout << bestWord << "\n" << bestLen << "\n"; return 0; } Как работает на примере: - Ввод: "abra cadabra fibra" - Слова: abra (4), cadabra (7), fibra (5) - Самое длинное: cadabra, длина 7 - Вывод: cadabra 7 Дополнительные заметки: - Если вход пустой или содержит только пробелы, bestWord останется пустой строкой и bestLen — 0, что корректно выводится как пустая строка и 0. - Программа поддерживает любые символы в словах кроме пробелов, и считает слова по пробельным разделителям (через istringstream). Если хочешь ограничиться только пробелами, можно реализовать разбор вручную, но текущий вариант проще и надежнее для задач начального уровня.