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

set_intersection - C++

Восстановить пароль Регистрация
Другие темы раздела
C++: IDE, инструментарий Посоветуйте хорошую среду разработки http://www.cyberforum.ru/cpp-beginners/thread356113.html
Какие среды разработок под C самые хорошие и какую вы бы мне посоветовали.
C++ Сгенерировать случайные числа с плавающей точкой в заданном диапазоне, включающем и отрицательные значения возникла проблема, не могу решить... раньше когда пользовался функ. ( x + rand() % x ) с целыми числами было все хорошо, но у меня есть задача, там надо точки в диапазоне от -1 до 1 то есть например : чтоб не превышало -1 с 10 точкой, до 1 с десятичной точкой ... например : -0.56, -0.99 и так дальше не выше -1.00 и с плюсом также 0.56, 0.23, 0.99 и до 1.00... Использовал числа от -10, -100 до ... http://www.cyberforum.ru/cpp-beginners/thread356112.html
C++: IDE, инструментарий Microsoft Visual C++ 6.0 и msdn
Помогите найти Microsoft Visual C++ 6.0 и msdn. не как не могу найти Microsoft Visual C++ 6.0 и msdn. скиньте пару ссылок
Перебор. Задача про ферзей. C++
На шахматной доске требуется расставить 8 ферзей, что бы ни один ферзь не атаковал другого. Написал программу. Три дня писал). Что вы скажите о ней, можно ли было это сделать проще? Может в коде что-то не то посмотрите. Заранее спасибо. #include <iostream> using namespace std; const int a=8; const int zn=547; const int dama=542;
C++ strtod - ошибка во время выполнения http://www.cyberforum.ru/cpp-beginners/thread356077.html
#include <cstdlib> #include <iostream> #include <string> using namespace std; int main(int argc, char *argv) { string s = "123435b34"; const char *str = s.c_str();
C++ Посчитать частичную сумму ряда не могли бы помочь с этим примером Given natural number a. Calculate the expression shown on image подробнее

Показать сообщение отдельно
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.09.2011, 15:13     set_intersection
Доброго времени суток.
Есть задача.
Пытаюсь решить ее через STL
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
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <algorithm>
#include <iterator>
 
#define _DEBUG
 
std::set<char> nums( char ch )
{
    static std::map< int, std::string > templates;
    
    if ( templates.empty() )
    {
        templates['0'] = "0";
        templates['1'] = "1";
        templates['2'] = "2";
        templates['3'] = "3";
        templates['4'] = "4";
        templates['5'] = "5";
        templates['6'] = "6";
        templates['7'] = "7";
        templates['8'] = "8";
        templates['9'] = "9";
        templates['a'] = "0123";
        templates['b'] = "1234";
        templates['c'] = "2345";
        templates['d'] = "3456";
        templates['e'] = "4567";
        templates['f'] = "5678";
        templates['g'] = "6789";
        templates['?'] = "0123456789";
    }
    
    std::string str = templates[ ch ];
    
    std::set< char > res;
    for ( int i = 0; i < (int) str.size(); ++i)
        res.insert( str[i] );
    
    return res;
}
 
int main()
{   
    std::string a, b;
    std::cin >> a >> b;
    
    if ( a.size() != b.size() )
        return 1;
    
    int answer = 1;
    
    for (int i = 0; i < (int) a.size(); ++i)
    {
        std::set<char> first = nums( a[i] );
        std::set<char> second = nums( b[i] );
        
        std::set<char> temp;
        
        std::set_intersection( first.begin(), first.end(),
            second.begin(), second.begin(), 
                std::inserter< std::set<char > > (temp, temp.begin() ) );
                
        answer *= temp.size();
        
#ifdef _DEBUG
        
        std::cout << "A: ";
        std::copy( first.begin(), first.end(), std::ostream_iterator<char> (std::cout, " ") );
        
        std::cout << "\nB: ";
        std::copy( second.begin(), second.end(), std::ostream_iterator<char> (std::cout, " ") );
        
        std::cout << "\nIntersection: ";
        
        for ( std::set<char>::iterator it = temp.begin() ; it != temp.end() ; ++it)
            std::cout << '\'' << *it << '\'' << ' ';
        
        std::cout << std::endl << std::endl;
        
#endif // _DEBUG
    
    }
    
    std::cout << answer;
    
}
Не получается найти пересечение множеств, ответ стабильно пустой выходит =\
Что я неправильно делаю?

Ошибка где-то в 62-64 строке. Либо пересечение не находиться, либо результат не записывается.

Добавлено через 1 час 21 минуту
Мда...
В 63й строке 2 раза second.begin() написано. Исправил второе на second.end() - Accepted.
Спасибо всем, кто обратил внимание на тему.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru