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

Определить наиболее многочисленную группу слов одинаковой длины. Объединить эти слова в строку. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перенос кода на 64-битную платформу http://www.cyberforum.ru/cpp-beginners/thread515164.html
Пытаюсь разобраться с проблемами на переноса кода на 64битную платформу. В сети встретил вот такую конструкцию. #ifdef _WIN64 #define CONST3264(a) (a##i64) #else #define CONST3264(a) (a) #endif const size_t M = ~CONST3264(0xFu); Вроде всё понятно, кроме одного: "##i64".
C++ C# и С++ Я решил начать программировать и не могу определится между двумя языками C# и С++ можете подсказать + и - и перспективность языка? http://www.cyberforum.ru/cpp-beginners/thread515162.html
C++ вывести на экран фигуру в виде ромба если вводится ее сторона.
вывести на экран фигуру в виде ромба если вводится ее сторона. Добавлено через 5 минут вывести на экран фигуру в виде ромба символами * если вводится ее сторона.
[C++] В одномерном массиве,состоящем из n вещественных элементов ,вычислить... C++
Задание 1 В одномерном массиве,состоящем из n вещественных элементов ,вычислить: 1)сумму отрицательных элементов массива 2)произведение элементов массива, расположенных между максимальным и минимальным элементами Упорядочить элементы массива по возрастанию. Задание 2 Дана целочисленная прямоугольная матрица.Определить: 1)Количество строк, не содержащих ни...
C++ Модифицируйте класс fraction http://www.cyberforum.ru/cpp-beginners/thread515151.html
Модифицируйте класс fraction в четыре функциональном дробном калькуляторе, чтобы он использовал перегруженные операции сложения, вычитания, умножения и деления. Также перегрузите операции == и != и используйте их для выхода из цикла, когда пользователь вводит 0/1, 1/0, 0 и 1 значение дроби.
C++ L= 2·π·R Дана длина L окружности. Найти ее радиус R и площадь S круга, ограниченного этой окружностью, учитывая, что L = 2·π·R, S = π·R2. В качестве значения π использовать 3.14. ребята,как будет R=??? подробнее

Показать сообщение отдельно
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
10.03.2012, 23:37     Определить наиболее многочисленную группу слов одинаковой длины. Объединить эти слова в строку.
Вариант.
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
41
42
43
44
45
46
47
48
49
50
51
52
#include <vector>
#include <map>
#include <iostream>
#include <sstream>
#include <string>
#include <iterator>
#include <algorithm>
 
typedef std::vector<std::string> VectorOfStrings;
 
VectorOfStrings words(const std::string &string) {
  std::stringstream source(string);
  VectorOfStrings result;
  std::copy(std::istream_iterator<std::string>(source),
    std::istream_iterator<std::string>(),
    std::back_inserter(result));
  return result;
};
 
std::string unwords(const VectorOfStrings &words) {
  std::stringstream result;
  std::copy(words.begin(), words.end(),
    std::ostream_iterator<std::string>(result, " "));
  return result.str();
}
 
std::map<int, VectorOfStrings> groupByLength(const VectorOfStrings &words) {
  std::map<int, VectorOfStrings> result;
  for (VectorOfStrings::const_iterator i = words.begin(); i != words.end(); ++i)
    result[i->size()].push_back(*i);
  return result;
}
 
const VectorOfStrings &longestGroup(const std::map<int, VectorOfStrings> &groups) {
  struct Local {
    static bool compare(const std::pair<int, VectorOfStrings> &a,
      const std::pair<int, VectorOfStrings> &b) {
      return a.second.size() < b.second.size();
    }
  };
  return (std::max_element(groups.begin(), groups.end(),
    Local::compare))->second;
}
 
int main(int argc, char *argv[]) {
  std::cout << 
    unwords(
    longestGroup(
    groupByLength(
    words("these are words we could not sing"))))
    << std::endl;
}

Не по теме:

Функциональные языки просто созданы для таких задач.

Код
maxChainOfWords :: [Char] -> [Char]
maxChainOfWords = unwords . maximum . grouped . sorted . words
    where maximum = List.maximumBy length'
          grouped = List.groupBy equalLength
          sorted = List.sortBy length'
          --
          equalLength = (==) `Function.on` length
          length' = compare `Function.on` length

 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru