Ниже подробное решение задачи для начинающего C++ программиста, с объяснениями шаг за шагом и примером кода.
Цель: найти самое длинное слово в переданной строке. Слово — последовательность непробельных символов, ограниченная пробелами или концами строки. В случае нескольких слов одинаковой длины выбрать первое встреченное.
Как работает подход:
- Читаем всю строку.
- Проходим по символам и собираем текущее слово в переменную cur, пока не встретится пробел.
- При встрече пробела сравниваем длину cur с текущим максимумом. Если cur длиннее, сохраняем его как лучшее слово.
- После цикла проверяем последнее слово (если строка не кончилась пробелом).
- Выводим самое длинное слово и его длину. Если слов нет, выводим пустую строку и 0.
Пояснения по выбору условий:
- Мы обновляем максимум только при строгом '>' (не '>='), чтобы сохранить первое встретившееся слово максимальной длины.
- Ввод читается одной строкой через getline, как и требуется в условии задачи.
Код на C++ (C++11/17):
#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) и оставить разделителями любые пробельные символы.