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

Контейнеры - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.79
Virtus2000
Сообщений: n/a
15.06.2011, 18:13     Контейнеры #1
Здравствуйте. Помогите написать программу на С, с этим языком не знаком почти, а контейнеры вообще не понимаю. В общем беда полная....

1. Создать контейнер, содержащий объекты пользовательского типа. Тип контейнера выбирается в соответствии с вариантом задания.
2. Отсортировать его по убыванию элементов.
3. Просмотреть контейнер.
4. Используя подходящий алгоритм, найти в контейнере элемент, удовлетворяющий заданному условию.
5. Переместить элементы, удовлетворяющие заданному условию в другой (предварительно пустой) контейнер. Тип второго контейнера определяется вариантом задания.
6. Просмотреть второй контейнер.
7. Отсортировать первый и второй контейнеры по возрастанию элементов.
8. Просмотреть их.
9. Получить третий контейнер путем слияния первых двух.
10. Просмотреть третий контейнер.
11 .Подсчитать, сколько элементов, удовлетворяющих заданному условию, содержит третий контейнер.
12.Определить, есть ли в третьем контейнере элемент, удовлетворяющий заданному условию.

1-ый контейнер vector
2-ой контейнер list
тип данных int
Заданное условие можно придумать самому. 3-ий контейнер любой.

Заранее благодарю!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2011, 18:13     Контейнеры
Посмотрите здесь:

C++ контейнеры
контейнеры С++ C++
[С++]Строки-контейнеры C++
Контейнеры с++ C++
ООП и контейнеры C++
Контейнеры C++
C++ Кодирующие контейнеры?
Контейнеры STL C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
16.06.2011, 03:21     Контейнеры #2
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
#include <iostream>
#include <algorithm>
#include <functional>
#include <iterator>
#include <vector>
#include <list>
#include <ctime>
#include <cstdlib>
 
//------------------
 
class RandVal
{
    private:
        int min_;
        int max_;
 
    public:
        RandVal(int min, int max)
            : min_(min),
              max_(max)
        {
            if(max < min) std::swap(min, max);
        }
 
        int operator()()
        {
            return std::rand() % (max_ - min_ + 1) + min_;
        }
};
 
//------------------
 
int main()
{
    typedef std::ostream_iterator<int> IntOutIter;
    typedef std::vector<int> Vec;
    typedef std::list<int> Lst;
 
    // 1.
    Vec cntr1Vec(10);
    std::srand(std::time(0));
    std::generate(cntr1Vec.begin(), cntr1Vec.end(), RandVal(-50, 50));
 
    // 2.
    std::sort(cntr1Vec.begin(), cntr1Vec.end(), std::greater<Vec::value_type>());
 
    // 3.
    std::cout << "<контейнер1> содержит: ";
    std::copy(cntr1Vec.begin(), cntr1Vec.end(), IntOutIter(std::cout, " "));
    std::cout << '\n';
 
    // 4.
    std::cout << "Найти в <контейнер1> первое число меньшее: ";
    Vec::value_type i;
    std::cin >> i;
    Vec::iterator it = std::find_if(cntr1Vec.begin(), cntr1Vec.end(),
                                     std::bind2nd(std::less<Vec::value_type>(), i));
    if(it != cntr1Vec.end())
        std::cout << *it << '\n';
    else
        std::cout << "Не найдено\n";
 
    // 5.
    Lst cntr2Lst;
    std::remove_copy_if(cntr1Vec.begin(), cntr1Vec.end(),
                        std::back_inserter(cntr2Lst), std::bind2nd(std::less<Lst::value_type>(), 0));
 
    // 6.
    std::cout << "<контейнер2> содержащий только положительные элементы из <контейнер1>: ";
    std::copy(cntr2Lst.begin(), cntr2Lst.end(), IntOutIter(std::cout, " "));
    std::cout << '\n';
 
    // 7.
    std::sort(cntr1Vec.begin(), cntr1Vec.end(), std::less<Vec::value_type>());
    cntr2Lst.sort(std::less<Lst::value_type>());
 
    // 8.
    std::cout << "Отсортированный по возрастанию <контейнер1>: ";
    std::copy(cntr1Vec.begin(), cntr1Vec.end(), IntOutIter(std::cout, " "));
    std::cout << '\n';
    std::cout << "Отсортированный по возрастанию <контейнер2>: ";
    std::copy(cntr2Lst.begin(), cntr2Lst.end(), IntOutIter(std::cout, " "));
    std::cout << '\n';
 
    // 9.
    Vec cntr3Vec(cntr1Vec.size() + cntr2Lst.size());
    std::merge(cntr1Vec.begin(), cntr1Vec.end(),
               cntr2Lst.begin(), cntr2Lst.end(), cntr3Vec.begin());
 
    // 10.
    std::cout << "<контейнер3> полученный путём слияния <контейнер1> и <контейнер2>: ";
    std::copy(cntr3Vec.begin(), cntr3Vec.end(), IntOutIter(std::cout, " "));
    std::cout << '\n';
 
    // 11.
    std::cout << "Количество отрицательных элементов в <контейнер3>: ";
    std::cout << std::count_if(cntr3Vec.begin(), cntr3Vec.end(),
                               std::bind2nd(std::less<Vec::value_type>(), 0)) << '\n';
 
    // 12.
    std::cout << "Проверить наличие в <контейнер3> числа: ";
    std::cin >> i;
    bool found = std::binary_search(cntr3Vec.begin(), cntr3Vec.end(), i);
    std::cout << (found? "Найдено" : "Не найдено") << '\n';
 
    return 0;
}
Yandex
Объявления
16.06.2011, 03:21     Контейнеры
Ответ Создать тему
Опции темы

Текущее время: 18:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru