
Написать класс работы со строками. Добавить следующие методы: 1) Вывести самое длинное слово;2)
Вывести самое короткое слово;С++ пожалуйста быстрее 55 баллов

Ответы на вопрос

#include <iostream>
#include <string>
#include <vector>
class StringUtils {
public:
// Возвращает самое длинное слово в строке
static std::string getLongestWord(const std::string& str) {
std::vector<std::string> words = split(str);
std::string longestWord;
for (const std::string& word : words) {
if (word.length() > longestWord.length()) {
longestWord = word;
}
}
return longestWord;
}
// Возвращает самое короткое слово в строке
static std::string getShortestWord(const std::string& str) {
std::vector<std::string> words = split(str);
std::string shortestWord = words[0];
for (const std::string& word : words) {
if (word.length() < shortestWord.length()) {
shortestWord = word;
}
}
return shortestWord;
}
private:
// Разбивает строку на слова
static std::vector<std::string> split(const std::string& str) {
std::vector<std::string> words;
std::string word;
for (char c : str) {
if (c == ' ') {
words.push_back(word);
word.clear();
} else {
word += c;
}
}
words.push_back(word);
return words;
}
};
int main() {
std::string str = "The quick brown fox jumps over the lazy dog";
std::cout << "Longest word: " << StringUtils::getLongestWord(str) << std::endl;
std::cout << "Shortest word: " << StringUtils::getShortestWord(str) << std::endl;
return 0;
}
Предложения пишите в строке std::string str =



#include <string>
#include <vector>
class StringHelper {
public:
// Конструктор класса
StringHelper(const std::string& str) : str_(str) {}
// Метод для получения самого длинного слова
std::string getLongestWord() const;
// Метод для получения самого короткого слова
std::string getShortestWord() const;
private:
// Внутреннее представление строки
std::string str_;
};
std::string StringHelper::getLongestWord() const {
std::vector<std::string> words = split(str_);
std::string longestWord;
for (const auto& word : words) {
if (word.size() > longestWord.size()) {
longestWord = word;
}
}
return longestWord;
}
std::string StringHelper::getShortestWord() const {
std::vector<std::string> words = split(str_);
std::string shortestWord;
for (const auto& word : words) {
if (shortestWord.empty() || word.size() < shortestWord.size()) {
shortestWord = word;
}
}
return shortestWord;
}
Функция split в этом коде не реализована, но она должна разбивать строку на слова по пробелам и возвращать список слов в виде std::vector<std::string>. Вы можете реализовать эту функцию самостоятельно, либо использовать готовую реализацию, например, из стандартной библиотеки C++



Конечно, вот пример реализации класса для работы со строками на C++ с методами для поиска самого длинного и самого короткого слова в строке:
cpp#include <iostream>
#include <string>
#include <sstream>
#include <vector>
class StringManipulator {
private:
std::string input_string;
public:
StringManipulator(const std::string& input) : input_string(input) {}
// Метод для разделения строки на слова
std::vector<std::string> splitIntoWords() const {
std::vector<std::string> words;
std::istringstream iss(input_string);
std::string word;
while (iss >> word) {
words.push_back(word);
}
return words;
}
// Метод для поиска самого длинного слова
std::string findLongestWord() const {
std::vector<std::string> words = splitIntoWords();
if (words.empty()) {
return "";
}
std::string longest_word = words[0];
for (const std::string& word : words) {
if (word.length() > longest_word.length()) {
longest_word = word;
}
}
return longest_word;
}
// Метод для поиска самого короткого слова
std::string findShortestWord() const {
std::vector<std::string> words = splitIntoWords();
if (words.empty()) {
return "";
}
std::string shortest_word = words[0];
for (const std::string& word : words) {
if (word.length() < shortest_word.length()) {
shortest_word = word;
}
}
return shortest_word;
}
};
int main() {
std::string input;
std::cout << "Введите строку: ";
std::getline(std::cin, input);
StringManipulator manipulator(input);
std::string longest_word = manipulator.findLongestWord();
std::string shortest_word = manipulator.findShortestWord();
if (!longest_word.empty()) {
std::cout << "Самое длинное слово: " << longest_word << std::endl;
} else {
std::cout << "Строка пуста." << std::endl;
}
if (!shortest_word.empty()) {
std::cout << "Самое короткое слово: " << shortest_word << std::endl;
} else {
std::cout << "Строка пуста." << std::endl;
}
return 0;
}
Этот код создает класс StringManipulator
, который принимает входную строку и имеет методы findLongestWord
и findShortestWord
для поиска самого длинного и короткого слова соответственно. Метод splitIntoWords
используется для разделения входной строки на слова.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili