Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3560289
А
Аноним
04 февраля 2026 20:12 · публичный вопрос
А
Аноним

Напишите программу на С++ как начинающий, которая выводит самое длинное слово переданной её символьной строки. Слово – это последовательность непробельных символов, ограниченная…

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

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

Ответ нейросети
04 февраля 2026 20:12

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

Цель: найти самое длинное слово в переданной строке. Слово — последовательность непробельных символов, ограниченная пробелами или концами строки. В случае нескольких слов одинаковой длины выбрать первое встреченное.

Как работает подход:

  • Читаем всю строку.
  • Проходим по символам и собираем текущее слово в переменную cur, пока не встретится пробел.
  • При встрече пробела сравниваем длину cur с текущим максимумом. Если cur длиннее, сохраняем его как лучшее слово.
  • После цикла проверяем последнее слово (если строка не кончилась пробелом).
  • Выводим самое длинное слово и его длину. Если слов нет, выводим пустую строку и 0.

Пояснения по выбору условий:

  • Мы обновляем максимум только при строгом '>' (не '>='), чтобы сохранить первое встретившееся слово максимальной длины.
  • Ввод читается одной строкой через getline, как и требуется в условии задачи.

Код на C++ (C++11/17):

#include #include

int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr);

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

std::string bestWord = "";
int maxLen = 0;
std::string cur;

for (char c : s) {
    if (c != ' ') {
        cur += c;
    } else {
        if ((int)cur.size() > maxLen) {
            maxLen = (int)cur.size();
            bestWord = cur;
        }
        cur.clear();
    }
}

// Учесть последнее слово после цикла
if ((int)cur.size() > maxLen) {
    maxLen = (int)cur.size();
    bestWord = cur;
}

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

}

Пример Вход: abra cadabra fibra Выход: cadabra 7

Замечания:

  • Если вход не содержит слов (пустая строка или только пробелы), программа выведет пустую строку в первой строке и 0 во второй.
  • Приведённый код считает слова, разделённые пробелами. Если в задании нужно учитывать и другие пробельные символы (табуляции и т.п.), можно заменить условие c != ' ' на использование isspace(c) и оставить разделителями любые пробельные символы.