C/C++

Помогите с задачей по C++

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

Входные данные
Входная строка содержит произвольную последовательность символов.

Выходные данные
Программа должна вывести в первой строке самое длинное слово переданной ей строки, а во второй – длину этого слова. Если слов максимальной длины несколько — вывести первое встретившееся слово максимальной длины.

Примеры
входные данные
abra cadabra fibra
выходные данные
cadabra
7
Kanat Kzylbassov
Kanat Kzylbassov
154
Вот пример решения задачи на C++:

#include <iostream>
#include <string>

using namespace std;

int main() {
string input;
getline(cin, input); // считываем строку

string longest_word = "";
int longest_length = 0;

string current_word = "";
int current_length = 0;

for (char c : input) {
if (c == ' ') { // если символ - пробел, значит, текущее слово закончилось
if (current_length > longest_length) { // если текущее слово длиннее, чем самое длинное слово до этого
longest_word = current_word;
longest_length = current_length;
}
current_word = "";
current_length = 0;
} else {
current_word += c;
current_length++;
}
}

// проверяем последнее слово
if (current_length > longest_length) {
longest_word = current_word;
longest_length = current_length;
}

cout << longest_word << endl << longest_length << endl;

return 0;
}


Программа считывает строку с помощью функции getline, затем проходится по каждому символу строки и собирает слова, подсчитывая их длину. Если текущее слово длиннее, чем самое длинное слово до этого, то оно становится новым самым длинным словом. В конце программы выводится самое длинное слово и его длина.
Владимир Сидоркин
Владимир Сидоркин
878
Лучший ответ
#include <iostream>
#include <string>

using namespace std;

int main() {
string input;
getline(cin, input); // считываем строку

string longest_word = "";
int longest_length = 0;

string current_word = "";
int current_length = 0;

for (char c : input) {
if (c == ' ') { // если символ - пробел, значит, текущее слово закончилось
if (current_length > longest_length) { // если текущее слово длиннее, чем самое длинное слово до этого
longest_word = current_word;
longest_length = current_length;
}
current_word = "";
current_length = 0;
} else {
current_word += c;
current_length++;
}
}

// проверяем последнее слово
if (current_length > longest_length) {
longest_word = current_word;
longest_length = current_length;
}

cout << longest_word << endl << longest_length << endl;

return 0;
}