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

Сортировка и итераторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ все элементы в массиве, кроме 1, нужно заменить суммой предыдущих элементов http://www.cyberforum.ru/cpp-beginners/thread618473.html
Ребят очень нужна помощь имеется задача суть такова : все элементы в массиве, кроме 1, нужно заменить суммой предыдущих элементов, например тест: есть массив из 5 элементов: 1 2 3 4 5 ---> 1 3 6 10 15. Нужно теперь, что бы эта задача была сделана с помощью связанного списка, я эту тему не особо понимаю (лежал в больнице когда проходили, а сам как не разбирался все равно не понимаю) #include...
C++ Вычесть массивы Всем привет, ребят помогите закодить данную формулу, I1 и I2 двумерные массивы, x и y это их элементы соответственно. http://www.cyberforum.ru/cpp-beginners/thread618469.html
C++ Не могу понять из-за чего это происходит
Здраствуйте. Вот часть программы: #include <fstream> using namespace std; int main() { ifstream x("input.txt"); ofstream d("output.txt"); char a, c;
Cin и cout не компилируется C++
Начал изучать С++, и возникли проблемы с cin и cout, пишет Undefined symbol, хотя std прописан. Если пишу std::cin то выдает 'cout' is not a member of 'std'. Че делать-то?
C++ Структура с вложенным массивом структур http://www.cyberforum.ru/cpp-beginners/thread618448.html
Здравствуйте! Хочу создать некое подобие файловой системы. есть 2 структуры для папки и файла: struct directory { string name; //имя string path; //пусть к папке struct directory *dirs; //массив вложенных папок struct file * files; //массив содержащихся файлов
C++ Для заданного целого числа n вычислить значение суммы Для заданного целого числа n вычислить значение суммы:\sum_{{i}_{1}}^{n}\sum_{{i}_{2}}^{n}...\sum_{{i}_{n}}^{n}\frac{1}{{i}_{1}+...{i}_{n}} подробнее

Показать сообщение отдельно
Skies
0 / 0 / 0
Регистрация: 30.06.2012
Сообщений: 23

Сортировка и итераторы - C++

03.07.2012, 17:46. Просмотров 781. Ответов 1
Метки (Все метки)

Помогите пожалуйста разобраться в функции "sortByMarksCoeff". Реализации ее действий. Еще не
имел дело с итераторами и библиотекой <vector> и поэтому не пойму как осуществляется реализация этой функции.



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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
      struct Student
        {
            char*    nameSurname;
            bool     budgetary;
            int      marks[5];
            int      scholarship;
        
            Student* next,
                   * prev;
        };
        
        
        struct Group
        {
            int      groupNum;
        
            Student* head,
                   * tail;
            
            Group*   next,
                 *   prev;
        };
        
        
        struct University
        {
            int groupsAmount;
        
            Group* head, 
                 * tail;
        };
    
    double getMarksCoeff(Group* group)/средний балл контрактников к среднему баллу бюджетников
    {
        if(!group)
            return 0;
    
        Student* ptr = group->head;
        double b_coeff = 0;
        double c_coeff = 0;
    
        int c_num = 0, b_num = 0;
    
        while(ptr)
        {
            double coeff = 0;
    
            for(int c = 0; c < 5; ++c)
                coeff += ptr->marks[c];
    
            if(ptr->budgetary)
            {
                ++b_num;
                b_coeff += coeff;
            }
            else
            {
                ++c_num;
                c_coeff += coeff;
            }
            ptr = ptr->next;
        }
    
        if(c_num && b_num)
        {
            c_coeff /= c_num;
            b_coeff /= b_num;
    
            if(b_coeff != 0)
                return c_coeff/b_coeff;
        }
    
        return 0;
    }
    
    bool sortByMarksCoeff(University* univer) /*сортировка групп в порядке убывания отношения среднего бала контрактников к среднему балу бюджетников*/
    {
        struct MarkedGroup
        {
            Group* group;
            double mark;
    
            MarkedGroup(Group* in_group, double in_mark)
                : group(in_group), mark(in_mark) {}
        };
    
        vector<MarkedGroup> groups;
         
        if(!univer)
            return false;
    
        Group* ptr = univer->head;
    
        while(ptr)
        {
            groups.push_back(MarkedGroup(ptr, getMarksCoeff(ptr)));
    
            ptr = ptr -> next;
        }
    
        if(groups.empty())
            return 0;
    
    
        auto iter = groups.begin();
        auto end = groups.end();
    
        for(iter; iter != end; ++iter)
        {
            auto iter2 = iter + 1;
            auto end2 = groups.end();
    
            for(iter2; iter2 != end2; ++iter2)
            {
                if(iter2->mark < iter->mark)
                {
                    MarkedGroup buf = *iter2;
                    *iter2 = *iter;
                    *iter = buf;
                }
            }
        }
    
        univer->head = univer->tail = NULL;
    
        iter = groups.begin();
        end = groups.end();
    
        for(iter; iter != end; ++iter)
            addGroup(univer, iter->group, true);
         
        return true;
    }
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru