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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Несколько стартовых переменных в for http://www.cyberforum.ru/cpp-beginners/thread616778.html
Возможна ли такая конструкцияfor (int i = 0, int x = 0; i < 5; ++i, ++x) {}если да, то каков верный синтаксис? Тот вариант, который я написал, выдает 3 ошибки: error: expected unqualified-id before `int` error: `x` was not declared in this score error: expected `;` before `)` token
C++ Кто может порекомендовать норм универсальный парсер сайтов Добрый день уважаемые форумчане! По работе очень нужен пасер который мог бы вырезать с различных сайтов мне нужную информацию, инфа в основном текстовая. На фрилансе мне ни один программист ничего достойного не смог предложить - поэтому решил искать среди готовых парсеров. К моему удивлению их оказалось не очень большое количество. Скачал вот этот парсер сайтов но версия к сожалению... http://www.cyberforum.ru/cpp-beginners/thread616777.html
Процедура и функция: Создать другой массив, содержащий отрицательные элементы исходного массива. C++
доброго времени суток есть код программы //Дан одномерный массив, состоящий из 30 вещественных чисел. //Создать другой массив, содержащий отрицательные элементы исходного массива. #include "stdafx.h" #include <iostream> #include <io.h> #include <stdlib.h>
C++ Переписать строки в другой файл, в которых имеется более 30 символов
Имеется текстовый файл. Переписать его строки в другой файл, в которых имеется более 30 символов Решаю задачу целый день.
C++ 12 в опросов по C /C++. part3 http://www.cyberforum.ru/cpp-beginners/thread616751.html
всем привет. Помогите пожалуйста с вопросами. Во время работы возникало много моментов, которые не описаны в книге или описаны вскользь (в большинстве случаев это какие-то частные случаи). Использую компил Codeblocks 10.05 1) int main () { int main; main (); return 0; }
C++ Объясните пожалуйста. Поле а классе объявлено, однако пишет обратное Собственно всё во вложении. Объясните пожалуйста, а то часто такого наворочу. подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2012, 02:22     Структуры. Сортировка
Цитата Сообщение от Skies Посмотреть сообщение
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
59
float average_m (group *gr) // возвращает средний балл группы.
{
    int i = 0;
    float summ_gr = 0;
    student *st;
    for (i = gr -> count, st = gr -> headst; i > 0; --i, st = st -> nextst) //подсчёт суммы баллов группы.
    {
        for (int i = 0; i < 4; i++)
        {
            summ_gr += st -> marks[i];
        }
    }
    return summ_gr / (gr -> count * 4);
}
 
group* group_k(group *gr) // создаёт группу контрактников, у которых средний балл выше, чем в группе.
{
    group *gr_k = new group; // создание группы контрактников.
    gr_k -> headst = 0;
    gr_k -> count  = 0;
    gr_k -> nextgr = 0;
    
    student *st_last; // для адреса последней  структуры в группе контрактников.
    student *st;      // для перебора структур группы *gr.
    
    for ( st = gr -> headst; st != 0; st = st -> nextst) //перебор группы *gr.
    {
        if (!(st -> b)) // если контрактник, то заход.
        {
            float summ_m = 0;
            for (int i = 0; i < 4; i++) // подсчёт суммы баллов у контрактника.
            {
                summ_m += st -> marks[i];
            }
            if ((summ_m / 4) > average_m (gr)) // если средний балл выше, чем средний в группе, то заход.
            {
                if ( gr_k -> count == 0) // если заход первый, то создём первую структуру в группе
                                         // контрактников.
                {
                    st_last = new student;    // первая  структура.
                    gr_k -> headst = st_last; // запоминаем адрес первой структуры.
                    *st_last = *st;           // копируем старую структуру в первую.
                    st_last -> nextst = 0;    // первая, она же последняя, указывает на 0.
                    gr_k -> count++;          // увеличиваем счётчик сруктур в группе контрактников.
                } 
                else                          // если заход не первый.
                {
                    student *st_k = new student; // очередная структура.
                    *st_k = *st;                 // копирование старой в новую.
                    st_last -> nextst = st_k;    // предыдущая указывает на новую.
                    st_last = st_k;              // новая становится последней.
                    st_last -> nextst = 0;      // последняя указывает на 0.
                    gr_k -> count++;      // увеличиваем счётчик сруктур в группе контрактников
                } 
             }
         }
    }
    return gr_k; // указатель на структуру контрактников.
}
Осталось сделать функцию для сортировки по алфавиту.

Добавлено через 8 часов 1 минуту
Функцию group_k() лучше так сделать:
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
group* group_k(group *gr) // создаёт группу контрактников, у которых средний балл 
                          //выше, чем в группе.
{
    group *gr_k = new group; // создание группы контрактников.
    gr_k -> headst = 0;
    gr_k -> count  = 0;
    gr_k -> nextgr = 0;
    
    student *st_last; // для адреса последней  структуры в группе контрактников.
    student *st;      // для перебора структур группы *gr.
    
    for ( st = gr -> headst; st != 0; st = st -> nextst) //перебор группы *gr.
    {
        if (!(st -> b)) // если контрактник, то заход.
        {
            float summ_m = 0;
            for (int i = 0; i < 4; i++) // подсчёт суммы баллов у контрактника.
            {
                summ_m += st -> marks[i];
            }
            if ((summ_m / 4) > average_m (gr)) // если средний балл выше, чем средний в группе, то заход.
            {
                student *add = new student;    // новая структура.
                *add = *st;           // копируем старую структуру в новую.
                add -> nextst = 0;    // дальше новой ничего.
                gr_k -> count++;      // увеличиваем счётчик сруктур в группе контрактников.
                if (gr_k -> headst == 0)  // если группа пуста.
                {
                    gr_k -> headst = add; // новая в начало группы.
                }
                else  // если группа не пуста.
                {       
                    st_last -> nextst = add; // новая в конец группы.
                }
                st_last = add;  // новая становится последней.
            } // если средний балл выше
        } // если контрактник
    } // for
    return gr_k; // указатель на структуру контрактников.
}
 
Текущее время: 04:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru