Форум программистов, компьютерный форум 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) Написать функцию,... подробнее

Показать сообщение отдельно
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.12.2011, 09:38     длинное слово
Красивое решение уже есть, но предложу своё:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
#include <iterator>
#include <vector>
 
// сравнивает две строки по их длинне
bool lng_cmp( const std::string &a, const std::string &b )
{
   return a.length() < b.length();
}
 
int main()
{
   // наше предложение; как вариант можно ввести со стандартного ввода или из файла
   std::string sentence = "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.";
   
   // получить слова, заканчивающиеся на y
   std::vector< std::string > y_words;
   {
      std::istringstream strm( sentence, std::istringstream::in );
   
      for( std::istream_iterator<std::string> it ( strm ); it != std::istream_iterator<std::string> (); it++ )
      {
         if( (*it)[ it->length() - 1 ] == 'y' )
            y_words.push_back( *it );
      }
   }
   
   // вывести самое длинное из них
   std::cout << "longest: " << *(std::max_element( y_words.begin(), y_words.end(), lng_cmp )) << '\n';
   
 
   return 0;
}
Интересно, можно ли обойтись std::алгоритмами без промежуточного вектора.
 
Текущее время: 23:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru