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

STL, очередь с приоритетом - C++

Восстановить пароль Регистрация
 
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
29.09.2013, 19:55     STL, очередь с приоритетом #1
у меня есть очередь с приоритетом, есть функции ввода и вывода
в функции MinE после того как я нашел минимальный элемент, мне нужно добавить этот элемент в заданную позицию контейнера, я не знаю как это сделать

и еще в функции SerA после того как я нашел среднее арифметическое, мне нужно удалить все элементы которые больше этого среднего арифметического, я не знаю как это сделать

Помогите пожалуйста

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
#include <iostream>
#include <queue>
#include <deque>
#include <vector>
#include <conio.h>
#include <algorithm>
 
 
using namespace std;
 
void inp(priority_queue<float,vector<float> >  &q) 
{    int n; 
     float a;
    
    cout<<"How many elements insert ? "<<endl;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a;
        
         q.push(a);
 
    }
    cout<<q.size();
 
};
 
void out(priority_queue<float,vector<float> > q)
{
    cout << "\nOchered\n";
float w;
        while (! q.empty()) 
        { 
            w =  q.top();  
            cout << w << endl;
             q.pop(); 
        }
        cout<<"\n";
    
 
};
 
void MinE(priority_queue<float,vector<float> >  q)
{
    priority_queue <float, vector<float> > tmp = q;
 
        float min = tmp.top();
        int size = tmp.size();
    
        for (int i = 0; i < size; i++)
        {
            
            if (tmp.top() < min)
                min = tmp.top();
            tmp.pop();
        }
    
 
        cout << "\nMin: " << min  << endl;
        
    
        out(q);
};
 
void SerA(priority_queue<float,vector<float> >  q){
    
        priority_queue<float, vector<float> > tmp = q;
        int size = q.size();
        float sum=0, sr;
        for(int i = 0; i < size; i ++)
        {
            sum = sum+tmp.top();
            tmp.pop();
        }
        sr = sum / size;
        cout << "\nSer ar: " << sr <<  endl;
 
        out(q);
 
        
};
 
 
       int main()
{      
priority_queue<float,vector<float> > q;
    inp(q);
    out(q);
    MinE(q);
    SerA(q);
        getch();
    return 0;
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2013, 19:55     STL, очередь с приоритетом
Посмотрите здесь:

Очередь с приоритетом C++
C++ Задача по STL (Создать объект-контейнер, очередь с приоритетом, заполнить ее данными, тип char)
C++ Очередь (сделать очередь, чтобы добавляло, удаляло, читало. Не STL.)
Очередь с приоритетом C++
Очередь с приоритетом C++
C++ Очередь с приоритетом. Элементы с наивысшим приоритетом ставятся в начало очереди, с наименьшим – в конец
Библиотека STL: очередь с приоритетом C++
Как загнать в STL очередь объекты другого класса с приоритетом? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.09.2013, 01:03     STL, очередь с приоритетом #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
#include <iostream>
#include <iterator>
#include <functional>
#include <queue>
 
template<typename T>
void input(std::priority_queue<T>& q, std::istream& is = std::cin)
{
   std::cout << "Enter numbers to fill the queue (any letter to stop):\n->";
   q = std::move(std::priority_queue<T>(std::istream_iterator<T>(is), std::istream_iterator<T>()));
}
 
template<typename T>
void print(std::priority_queue<T> q)
{
   while(!q.empty())
   {
      std::cout << q.top() << " ";
      q.pop();
   }
   std::cout << std::endl;
}
 
template<typename T>
T min_elem(std::priority_queue<T> q)
{
   T min = q.top();
   q.pop();
   while (!q.empty())
   {
      if(min > q.top())
         min = q.top();
      q.pop();
   }
   return min;
}
 
template<typename T>
T average(std::priority_queue<T> q)
{
   size_t size = q.size();
   T temp = 0;
   while (!q.empty())
   {
      temp += q.top();
      q.pop();
   }
   return temp / size;
}
 
template<typename T, typename Compare>
std::priority_queue<T> erase(std::priority_queue<T> q, T elem, Compare comp)
{
   std::priority_queue<T> result;
   while (!q.empty())
   {
      if(comp(q.top(), elem)) q.pop();
      else
      {
         result.push(q.top());
         q.pop();
      }
   }
   return result;
}
 
int main()
{
   std::priority_queue<int> pq;
   input(pq);
   print(pq);
   std::cout << "Min element is: " << min_elem(pq) << std::endl;
   int aver = average(pq);
   std::cout << "Average is: " << aver << std::endl;
   pq = erase(pq, aver, std::greater<int>());
   print(pq);
 
   std::cout << "\nDone." << std::endl;
   return 0;
}
Yandex
Объявления
30.09.2013, 01:03     STL, очередь с приоритетом
Ответ Создать тему
Опции темы

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