Информатика, вопрос задал elenakravcova75 , 1 год назад

Написать класс работы со строками. Добавить следующие методы:

1) Вывести самое длинное слово;

2) Вывести самое короткое слово;

С++ пожалуйста быстрее 55 баллов


klazik4562185: пишу

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

Ответил AleksandrSalvatore
0

#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++

Ответил leprekon882
1

#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 =

Новые вопросы