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

STL. Функция, которая будет искать элементы большее среднего арифметического вектора и удалять их из вектора - C++

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

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
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <locale.h>
 
using namespace std;
 int size=7;
 
 
class Money
{
 
private:
    float c;
public:
 
    
     Money() : c(0){}
    Money(float a) : c(a){}
 
    float getC(){return c;};
    
 
    
    Money& operator*(Money &M){c *= M.c;return *this;};
    
    bool operator<(Money& m1){return this->getC() < m1.getC();};
    bool operator>(Money& m1){return this->getC() > m1.getC();};
 
    friend ostream &operator<<(ostream&out, const Money M){out<<M.c; return out;};
  
 
};
 
 
 
void out(vector<Money>&v)
{
    for(int i=0;i<size;++i)
        v.push_back(Money(rand()%10+2.5));
    cout<<"Our vector: "<<endl;
    copy(v.begin(),v.end(),ostream_iterator <Money>(cout, "\n  " ));
    cout<<endl;
    
};
 
 
int main()
{
    vector<Money> v;
    
 
    out(v);
    
    
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2013, 12:59     STL. Функция, которая будет искать элементы большее среднего арифметического вектора и удалять их из вектора
Посмотрите здесь:

C++ STL, пергрузка вывода для вектора о-О
Дан список, элементы которого являются координатами вектора. Найти длину вектора C++
STL . Обращение к 12 элементу вектора C++
C++ STL шаблон вектора
Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые элементы этого вектора C++
C++ Заменить первых 2 нулевые элементы заданного вектора соответственно на первых 2 не нулевые элементы этого вектора
C++ stl, перемещение элемента из вектора в стек
STL Пересечение множества и вектора C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
23.09.2013, 13:29     STL. Функция, которая будет искать элементы большее среднего арифметического вектора и удалять их из вектора #2
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
#include <iostream>
#include <vector>
#include <iterator>
#include <functional>
#include <algorithm>
 
using namespace std;
int size=7;
 
class Money
{
 
private:
    float c;
public:
    Money() : c(0){}
    Money(float a) : c(a){}
 
    float getC(){return c;};
 
    Money& operator*(Money &M){c *= M.c;return *this;};
 
    bool operator<(Money& m1){return this->getC() < m1.getC();};
    bool operator>(Money& m1){return this->getC() > m1.getC();};
 
    operator float(){return c;}
 
};
 
void out(vector<Money>& v)
{
    for(int i=0;i<size;++i)
        v.push_back(Money(rand()%10+2.5));
};
 
int main()
{
   vector<Money> v;
   out(v);
 
   std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, " "));
   std::cout << std::endl;
 
   float average = std::accumulate(v.begin(), v.end(), 0u) / v.size();
   std::cout << "Average is " << average << std::endl << std::endl;
   v.erase(std::remove_if(v.begin(), v.end(), std::bind2nd(std::greater<float>(), average)), v.end());
 
   std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, " "));
   std::cout << std::endl;
 
   return 0;
}
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
23.09.2013, 19:03  [ТС]     STL. Функция, которая будет искать элементы большее среднего арифметического вектора и удалять их из вектора #3
Цитата Сообщение от DiffEreD Посмотреть сообщение
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
#include <iostream>
#include <vector>
#include <iterator>
#include <functional>
#include <algorithm>
 
using namespace std;
int size=7;
 
class Money
{
 
private:
    float c;
public:
    Money() : c(0){}
    Money(float a) : c(a){}
 
    float getC(){return c;};
 
    Money& operator*(Money &M){c *= M.c;return *this;};
 
    bool operator<(Money& m1){return this->getC() < m1.getC();};
    bool operator>(Money& m1){return this->getC() > m1.getC();};
 
    operator float(){return c;}
 
};
 
void out(vector<Money>& v)
{
    for(int i=0;i<size;++i)
        v.push_back(Money(rand()%10+2.5));
};
 
int main()
{
   vector<Money> v;
   out(v);
 
   std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, " "));
   std::cout << std::endl;
 
   float average = std::accumulate(v.begin(), v.end(), 0u) / v.size();
   std::cout << "Average is " << average << std::endl << std::endl;
   v.erase(std::remove_if(v.begin(), v.end(), std::bind2nd(std::greater<float>(), average)), v.end());
 
   std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, " "));
   std::cout << std::endl;
 
   return 0;
}
плохо считает среднее арифметическое и выводит его в int значении
Yandex
Объявления
23.09.2013, 19:03     STL. Функция, которая будет искать элементы большее среднего арифметического вектора и удалять их из вектора
Ответ Создать тему
Опции темы

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