Форум программистов, компьютерный форум CyberForum.ru

длинное слово - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести скалярное произведение векторов. http://www.cyberforum.ru/cpp-beginners/thread407805.html
Даны векторы j(7) и k(8). Если наименьший элемент вектора k больше наибольшего элемента вектора k, то поменять их местами и вывести векторы, иначе вывести скалярное произведение векторов.
C++ Inline-метод Как можно декларировать inline-метод класса не используя ключевое слово inline?? http://www.cyberforum.ru/cpp-beginners/thread407803.html
C++ Программирование с использованием абстрактных типов данных
Уважаемые участники форума, помогите, пожалуйста, с написанием программ на С++. В задачах следует, помимо перечисленного в условии, определить еще необходимые конструкторы и деструкторы, возможно оператор(ы) присваивания для создаваемых типов и написать программу, иллюстрирующую работу с созданным типом. Задача 1. Определить класс "очередь символов", операции постановки в очередь и выборки ...
Задача по строкам C++ C++
Разработать программу , позволяющую добавлять данные структур с указанными полями в массив, просматривать массивы, а также найти средний балл студента с введенной фамилией.
C++ Как вывести массив? http://www.cyberforum.ru/cpp-beginners/thread407800.html
class Pirma_klase{ public: void isvesti_teksta(double JD); double skaicioti_jdn(); double JD; }; void Pirma_klase::isvesti_teksta(double JDN){ cout.setf(ios::fixed,ios::floatfield);
C++ Задачи по Функциям С++ Помогите с заданиями. Очень нужно... 1) Написать функцию, которая выводит на экран строку заданной длины из заданных символов. 2) Даны два случайно заполненных массива. Написать функцию, входными параметрами которой являются эти массивы, а выходными параметрами являются два других массива, в одном из которых содержаться отрицательные числа, а в другом – неотрицательные. 3) Написать функцию,... подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
15.12.2011, 09:56     длинное слово
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <algorithm>
#include <boost/algorithm/string.hpp>
#include <string>
#include <vector>
 
int main()
{
   const std::string s = "No one would have believed in the last years of the nineteenth century "
   "that this world was being watched keenly and closely by intelligences greater than man's and "
   "yet as mortal as his own; that as men busied themselves about their various concerns they were "
   "scrutinised and studied, perhaps almost as narrowly as a man with a microscope might scrutinise "
   "the transient creatures that swarm and multiply in a drop of water.";
   const char to_find = 'y';
   std::vector<std::string> words;
   boost::split(words, s, boost::is_any_of(" "), boost::token_compress_on);
   std::vector<std::string> y_words; 
   std::copy_if(words.begin(), words.end(), std::back_inserter(y_words), [to_find](const std::string& ss) 
   {return *ss.rbegin() == to_find;});
   std::cout << "Max length string ending by \"y\" is: " << *std::max_element(y_words.begin(), y_words.end(),
   [](const std::string& first, const std::string& second)
   {
      return first.length() < second.length();
   }) << std::endl;
}
Добавлено через 5 минут
Как вариант без промежуточного)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <algorithm>
#include <boost/algorithm/string.hpp>
#include <string>
#include <vector>
#include <iterator>
 
int main()
{
   const std::string s = "No one would have believed in the last years of the nineteenth century "
   "that this world was being watched keenly and closely by intelligences greater than man's and "
   "yet as mortal as his own; that as men busied themselves about their various concerns they were "
   "scrutinised and studied, perhaps almost as narrowly as a man with a microscope might scrutinise "
   "the transient creatures that swarm and multiply in a drop of water.";
   const char to_find = 'y';
   std::vector<std::string> words;
   boost::split(words, s, boost::is_any_of(" "), boost::token_compress_on);
   std::sort(words.begin(), words.end(), [to_find](const std::string& f, const std::string& s) 
   {return *f.rbegin() == to_find;});
   std::cout << *std::max_element(words.begin(), words.end(), [to_find](const std::string& f, const std::string& s)
   {
      return *f.rbegin() == to_find && *s.rbegin() == to_find && f.length() < s.length();
   }) << std::endl;
}
Так же можно сделать через remove_if.
 
Текущее время: 00:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru