Форум программистов, компьютерный форум, киберфорум
Наши страницы

В заданном словаре найти все анаграммы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывод адреса переменной типа char http://www.cyberforum.ru/cpp-beginners/thread1643236.html
Всем привет! Хочу задать вопрос... есть код: #include <iostream> int main() { char ch = 'h'; char* p = &ch;
C++ Разница между функциями atan и atan2 Здравствуйте. В чём разница между atan и atan2? http://www.cyberforum.ru/cpp-beginners/thread1643233.html
C++ Определить – является ли натуральное число простым
4) Определить – является ли натуральное число простым. Простое число – число, делящееся только на 1 и на само себя. При решении задачи составить схему программы и реализовать программу на языках С++
Найти делители натурального числа, введенного с клавиатуры C++
3) Найти делители натурального числа, введенного с клавиатуры. При решении задачи составить схему программы и реализовать программу на языках С++
C++ Определить, является натуральное число четным или нечетным http://www.cyberforum.ru/cpp-beginners/thread1643192.html
2) Определить, является натуральное число четным или нечетным. При решении задачи составить схему программы и реализовать программу на языках С++
C++ Найти остаток от деления двух натуральных чисел 1) Найти остаток от деления двух натуральных чисел. При решении задачи составить схему программы и реализовать программу на языках С++ подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
20.01.2016, 20:47
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//Задается словарь. Найти с помощью процедуры в нем все анаграммы (слова, составленные
//из одних и тех же букв).
///////////////////////////////////////////////////////////////////////////////
#include <fstream>
#include <iostream>
#include <iterator>
#include <set>
#include <string>
///////////////////////////////////////////////////////////////////////////////
typedef std::string                 T_str;
typedef std::multiset   < char  >   T_symb_multiset;
///////////////////////////////////////////////////////////////////////////////
struct  T_less_symb_multiset
{
    //-------------------------------------------------------------------------
    bool    operator()
        (
            T_str   const   &   L,
            T_str   const   &   R
        )
    {
        T_symb_multiset     LL  (
                                    L.begin     (),
                                    L.end       ()
                                );
 
        T_symb_multiset     RR  (
                                    R.begin     (),
                                    R.end       ()
                                );
 
        return  LL  <   RR;
    }
    //-------------------------------------------------------------------------
};
///////////////////////////////////////////////////////////////////////////////
typedef std::multiset
    <
        T_str,
        T_less_symb_multiset
    >
    T_anagrams;
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::ifstream   ifile("i.txt");
 
    if( !ifile )
    {
        std::cout   <<  "Error!"
                    <<  std::endl;
 
        system("pause");
        exit(0);
    }
 
    T_anagrams  anagrams;
 
    std::copy
        (
            std::istream_iterator< T_str >  ( ifile ),
            std::istream_iterator< T_str >  (),
 
            std::inserter
                (
                    anagrams,
                    anagrams.begin()
                )
        );
 
    if  (
            anagrams.empty()
        )
    {
        std::cout   <<  "File is empty."
                    <<  std::endl;
    }
 
    for (
            auto
            L   =   anagrams.begin  (),
            R   =   L;
            R   !=  anagrams.end    ();
            L   =   R
        )
    {
        R               =   anagrams.upper_bound    ( *L );
        auto    dist    =   std::distance           ( L,    R );
 
        if  (
                dist    >   1
            )
        {
            std::cout   <<  dist
                        <<  " anagrams:"
                        <<  std::endl;
 
            std::copy
                (
                    L,
                    R,
                    std::ostream_iterator< T_str >  ( std::cout,  "\t" )
                );
 
            std::cout   <<  std::endl
                        <<  std::endl;
        }//if
    }//for
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru