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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
erro1
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 10
#1

Отсортировать элементы масс. структуры - C++

14.11.2010, 18:09. Просмотров 625. Ответов 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
#include <iostream.h>
#include <string.h>
#include <conio.h>
 
int k=0,i,j,E=0;
struct tag_fio 
    {
    char first[41]; //surname
    char last[41];  //name
    char otch[41];  //patronymic
    };
struct birth 
    {
    int day;
    int month;
    int year;
    };
struct student 
    {
    int kurs, group;
    int mark[3];
    float fAver; //stud's aver. score
    struct tag_fio fio;
    struct birth dob;
    } *stud; 
        
int main(){
    cout<<"A program for collecting information from the certification card,====\n";
    cout<<"sorting students into groups and displaying the group average score.=\n";
    cout<<"=====================================================================";
    stud = new student[k];
    cout<<endl<<endl<<"Kol-vo studentov - ";cin>>k;
    //function defination
    void input(student *stud,int n);
    //function call
    input(stud,k);
}
void input(student *stud,int n) {
    cout<<endl<<endl<<"Vvedite sled. infu: ";
    cout<<endl<<endl;
    for(i=0;i<k;i++) 
        {
        stud[i].fAver = 0;
        cout<<"Student # "<<i+1<<endl<<endl;
        cout<<"FIO : ";
        cin>>stud[i].fio.first>>stud[i].fio.last>>stud[i].fio.otch;
        cout<<"Datu rojd. : ";
        cin>>stud[i].dob.day>>stud[i].dob.month>>stud[i].dob.year;
        cout<<"Group kurs : "; cin>>stud[i].group>>stud[i].kurs;
        cout<<"Ocenki po 3-em disc. :\n";
        for(j=0;j<3;j++) {
            cin>>stud[i].mark[j];
            stud[i].fAver += stud[i].mark[j]; }
    stud[i].fAver /= 3;
    cout<<stud[i].fAver<<endl;
    }
}
я в ступпоре ибо не имею представления как реализовать фильтрацию (или сортировку) по группам
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2010, 18:09     Отсортировать элементы масс. структуры
Посмотрите здесь:

Отсортировать элементы структуры по алфавиту. - C++
друзья, не подскажите как отортировать элементы структуры по алфавиту???

Отсортировать массив структуры - C++
Собственно эти записи должны быть по алфавиту расставлены (а не фамилии как думал ранее) поэтому , думаю, надо как-то подкорректировать х2,...

Отсортировать структуры по полю union - C++
Ребят, дали вот задание. Сделать структуру, у которой одна переменная объединенного типа (union). Потом отсортировать структуры по...

Как отсортировать объекты из структуры? - C++
#include &lt;iostream&gt; using namespace std; struct Human{ char name; char sex; int year; int height; int weight; };

Отсортировать структуры по зарплатам, по именам. - C++
Всем добрый вечер. Срочно надо сделать курсовую по программированию с использованием двух структур. Обе структуры должны быть записаны в...

Дана матрица. В каждой строке исключить наибольший и наименьший элементы, а среди остальных найти средние арифметические значения и записать их в масс - C++
Дана матрица. В каждой строке исключить наибольший и наименьший элементы, а среди остальных найти средние арифметические значения и...

Найти максимальный элемент. Отсортировать предшествующие ему элементы по убыванию, а следующие за ним элементы по возрастанию. - C++
Дан одномерный массив целых чисел, содержащий 20 различных элементов. Найти максимальный элемент. Отсортировать предшествующие ему элементы...

Отсортировать массив из структур по одному из полей структуры любым способом - C++
Отсортировать массив из структур по одному из полей структуры любым способом.

Сформировать массив данных с помощью структуры. Отсортировать полученный список по полю «год издания» - C++
Сформировать массив данных с помощью структуры. Предметная область – список книг в библиотеке (номер по порядку, ...

Отсортировать элементы массива - C++
Здравствуйте, дорогие форумчане. Перейду сразу к делу. Нужно написать программу к следующему заданию: Задан массив, содержащий N...

Отсортировать элементы массива - C++
Отсортировать элементы массива таким образом, чтобы сначала были размещены все положительные элементы, а затем все отрицательные (0 считаем...

Отсортировать по возрастанию элементы массива - C++
В массиве А каждый элемент изменяется в пределах от 0 .. 20. Отсортировать по возрастанию. C++


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
15.11.2010, 06:34     Отсортировать элементы масс. структуры #2
наверное надо проверять для каждой группы

Код
создать массив средних оценок групп, проинициализировать нулями

начать проверку групп
    начать проверку очередной группы
        создать сумму текущей группы, приравнять к нулю
        начать проверку студентов
            создать счётчик студентов текущей группы, приравнять к нулю
            начать проверку очередного студента
                если студент в текущей группе, прибавить его средний бал к сумме текущей группы
                увеличить счётчик студентов текущей группы
        разделить сумму текущей группы на счётчик студентов текущей группы (он не равен нулю?)
        сохранить результат в массив средних оценок групп
erro1
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 10
15.11.2010, 18:31  [ТС]     Отсортировать элементы масс. структуры #3
наверное надо проверять для каждой группы
Спасибо. Правда сегодня на парах меня осенило, и я сделал немного иначе. Создал 2-мерный массив, в 1-ом столбце я расположил все возможные неповторяющийся группы, а во втором - ихний средний бал. Но программа все равно некорректно работает, например: 6 студентов из груп 2, 2, 2, 5, 1 , 5 ; в 1-ом столбце будет 2 5 1, а во 2-ом бред выходит. (1-ое среднее = среднему баллу первого студента, 2-ое среднее = сумме баллов 2-го и 3-го студента).Помогите найти ошибку ,пожалуйста, буду очень БЛАГОДАРЕН
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
#include <iostream.h>
#include <string.h>
#include <conio.h>
#define kol 20
 
int k=0,i,j,E,z;
struct tag_fio 
    {
    char first[41]; //surname
    char last[41];  //name
    char otch[41];  //patronymic
    };
struct birth 
    {
    int day;
    int month;
    int year;
    };
struct student 
    {
    float group;
    int kurs;
    int mark[3];
    float aver; //stud's aver. score
    struct tag_fio fio;
    struct birth dob;
    } *stud; 
        
int main(){
    cout<<"A program for collecting information from the certification card,====\n";
    cout<<"sorting students into groups and displaying the group average score.=\n";
    cout<<"=====================================================================";
    stud = new student[k];
    cout<<endl<<endl<<"Kol-vo studentov - ";cin>>k;
    //function defination
    void input(student *stud,int n);
    void grupAver();
    //function call
    input(stud,k);
    grupAver();
}
void input(student *stud,int n) {
    cout<<endl<<"Vvedite sled. infu: ";
    cout<<endl<<endl;
    for(i=0;i<k;i++) 
        {
        stud[i].aver = 0;
        cout<<endl<<"Student # "<<i+1<<endl;
            /* Дабы не тратить время, эту часть кода игнорим */
    /*  cout<<"FIO : ";
        cin>>stud[i].fio.first>>stud[i].fio.last>>stud[i].fio.otch;
        cout<<"Datu rojd. : ";
        cin>>stud[i].dob.day>>stud[i].dob.month>>stud[i].dob.year;*/
        cout<<"Group kurs : "; cin>>stud[i].group; //>>stud[i].kurs;
        cout<<"Ocenki po 3-em disc. :\n";
        for(j=0;j<3;j++) {
            cin>>stud[i].mark[j];
            stud[i].aver += stud[i].mark[j]; }
    stud[i].aver /= 3;
    cout<<stud[i].aver;
    }
}
void grupAver() {
    float grps[kol][2],E=k;
    for(i=0;i<E;i++){
        for(j=i;j<E;) {
            if(stud[i].group == stud[j].group && i != j) {
                for(z=j;z<E-1;z++) 
                    stud[z].group = stud[z+1].group;
                    --E; 
                    }
            else ++j;
            }
        grps[i][0] = stud[i].group;
        }
    for(i=0;i<E;i++) 
        {
        grps[i][1]=0;
        z=0;
        for(j=0;j<k;j++) 
            {
            if (stud[j].group == grps[i][0])
                {
                grps[i][1]+= stud[j].aver;
                z++;
                }
            }
        grps[i][1] /= z;        
        }
     cout<<"\nSrednii bali studentov :\n";
     cout<<"    Grupa          Bal     ";
     for(i=0;i<E;i++)
     cout<<endl<<"      "<<grps[i][0]<<
     "            "<<grps[i][1]<<endl;
}
Yandex
Объявления
15.11.2010, 18:31     Отсортировать элементы масс. структуры
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru