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

Описать структуру с именем STUDENT - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.78
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
27.04.2012, 22:44     Описать структуру с именем STUDENT #1
Всем привет) Не могу решить задачу.
Описать структуру с именем STUDENT, содержащую следующие поля:
• фамилия и инициалы;
• номер группы;
• успеваемость (массив из пяти элементов).
Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT;
• упорядочить записи по возрастанию номера группы;
• вывод на дисплей фамилий и номеров групп для всех студентов, включённых в массив, если средний бал студента больше 4.0; если таких студентов нет, то вывести соответствующее сообщение.
Я не могу перевести массив успеваемости в Int, чтобы посчитать средний балл.
Вот что у меня есть.
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
// andrei3.cpp : Defines the entry point for the console application.
//
// 2kontrol.cpp : Defines the entry point for the console application.
//
// 2 контрольная 2 семестра.
#include "stdafx.h"
#include <fstream>
#include <string>
#include <stdlib.h>
#include <iostream>
using namespace std;
 
const int l_name = 15, l_ysp=5;
struct Student
{
        int num;
        char name[l_name];
        char ysp[l_ysp];
        int summ[5];
};
void selection_sort(Student *tr, const int sz);
 
int _tmain(int argc, _TCHAR* argv[])
 
{
    setlocale (LC_ALL, "Rus");
   // const int l_name = 9;  
    const int l_Student=100;
    Student dbase[l_Student];    
    int sr;
    //int summ=0;
    
    fstream infile;
    infile.open("dbase.txt", ios::in);
    if (!infile.is_open())
    {
        cout << "Error opening file\n";
        return 0;
    }
 
    int cnt = 0;
    while(!infile.eof())
    {
        infile >> dbase[cnt].name
               >> dbase[cnt].num
               >> dbase[cnt].ysp;
        ++cnt;
    };
    //selection_sort(dbase, cnt);       
    
    
 
    for (int i = 0; i < cnt; i++)
    {
        for (int k=0; k<l_ysp; k++)
        {
    //      dbase[k].summ=dbase[k].summ+dbase[k].ysp;
            
        }
    //  cout <<dbase[0].summ<<endl;        
    }
    
/*
    while (true) 
    {
        cout << "Введите средний балл студента или 0:"; cin >>sr;
        if (sr==0) return 0;
        bool not_found = true;
        for (int i = 0; i < cnt; i++)
        {
            if ( dbase[i].ysp>4)
            {               
                    cout << dbase[i].name <<' '<< dbase[i].num << ' ' << dbase[i].ysp << endl;
                    not_found = false;
                
            }
        }
 
    
    }
    */
    return 0;
}
 
/*
void selection_sort(Student *tr,const int sz)
{
    for (int i = 0; i < sz; ++i)
    {
        int minimum = i;
        for (int j = i + 1; j < sz; ++j)
        {
            if (strcmp(tr[j].num,tr[minimum].num) < 0)
            {
                Student temp = tr[minimum];
                tr[minimum] = tr[j];
                tr[j] = temp;
            }
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2012, 22:44     Описать структуру с именем STUDENT
Посмотрите здесь:

C++ описать структуру с именем STUDENT
Описать структуру с именем STUDENT C++
C++ описать структуру с именем STUDENT
Описать структуру с именем STUDENT C++
C++ Описать структуру с именем Student
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
27.04.2012, 23:36     Описать структуру с именем STUDENT #2
Что я увидел...
Получается, что ты создаешь массив структур на 100 элементов
C++
1
Student dbase[l_Student];
Здесь по всей видимости идет считывание и заполнение "базы" значениями из файла, одновременно подсчитывается число записей.
C++
1
2
3
4
5
6
7
8
int cnt = 0;
    while(!infile.eof())
    {
        infile >> dbase[cnt].name
               >> dbase[cnt].num
               >> dbase[cnt].ysp;
        ++cnt;
    };
Вот здесь, наверное, надо подсчитывать средний бал
C++
1
2
3
4
5
6
7
8
9
for (int i = 0; i < cnt; i++)
    {
        for (int k=0; k<l_ysp; k++)
        {
          dbase[k].summ=dbase[k].summ+dbase[k].ysp;
            
        }
      cout <<dbase[0].summ<<endl;        
    }
и что-то я не пойму.
Первое это то, что у нас cnt-струтур, т.е. массив dbase должен быть размером, способным хранить cnt-записей считанных из файла. Зачем же тогда
C++
1
Student dbase[l_Student];
А если у нас будет больше 100 записей, тогда вполне вероятно произойдет запись в ячейку памяти за пределы массива dbase. Второе
C++
1
dbase[k].summ=dbase[k].summ+dbase[k].ysp;
тут вообще какая-то ерунда. В первую очередь у нас cnt элементов dbase, а не k. k - это 5 и это размер массива
C++
1
summ
dbase[k].summ - обращаться нельзя. summ это адрес первого элемента массива. Дальше dbase[k].ysp имеет тип char и что-то к чему-то прибавлять не имеет смысла. Надо править
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
30.04.2012, 18:35  [ТС]     Описать структуру с именем STUDENT #3
denys_l, так как тогда написать то??

Добавлено через 21 час 16 минут
Подскажите пожалуйста!

Добавлено через 22 часа 26 минут
Подскажите кто-нибудь то

Добавлено через 23 часа 4 минуты
Может кто-нибудь ответить то????
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
30.04.2012, 19:10     Описать структуру с именем STUDENT #4
KOPC1886, вот мое исполнение , "черновик " но
работает Ошибки в структурах и массивах
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
01.05.2012, 19:55  [ТС]     Описать структуру с именем STUDENT #5
MrCold, а как отсортировать группы по номеру, в том топике код не сортирует.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
01.05.2012, 20:28     Описать структуру с именем STUDENT #6
С файлом KOPC1886 уж сами как нибудь справляйтесь - тем много таких
Миниатюры
Описать структуру с именем STUDENT  
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
01.05.2012, 22:13     Описать структуру с именем STUDENT #7
Сортировку я вам переписал
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
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//           SORTIROVKA GRUP
        //
 
          cout << endl << "Sortirovka grup" << endl;
 
int evalbuf = 0, i;
int numbuf = 0;
char familybuffer[100];
bool flag = true;
     while(flag){
 
         flag = false;
for( i = 0; i < IND - 1; ++i)
    {
        if (stud[i + 1].numgroup < stud[i].numgroup) {
 
////////////////////////////////////////
        numbuf = stud[i].numgroup;
        evalbuf = mideval[i] ;
        strcpy(familybuffer,stud[i].family); 
/////////////////////////////////////////////
        stud[i].numgroup = stud[i + 1].numgroup;
        mideval[i] = mideval[i + 1];
        strcpy(stud[i].family,stud[i + 1].family);
 
////////////////////////////////////////////////////
        stud[i + 1].numgroup = numbuf;
        mideval[i + 1] = evalbuf;
        strcpy(stud[i + 1].family, familybuffer); 
 
        flag = true;
        }
    }
     }
        // ВЫВОД ДАННЫХ  
     for( i = 0; i < IND; ++i)
    {
        cout << endl << "Nomer gruppi\t" << stud[i].numgroup <<"\tfamilia\t"<<stud[i].family <<"\tsredniy bal\t"<< mideval[i] << endl;
     }
Миниатюры
Описать структуру с именем STUDENT  
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
04.05.2012, 21:18  [ТС]     Описать структуру с именем STUDENT #8
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
// 2kontrol.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <fstream>
#include <string>
#include <stdlib.h>
#include <iostream>
using namespace std;
 
const int l_name = 9, l_num=7, l_time=17, l_buf = l_name + l_num + l_time;
struct Train
{
        int num;
        char name[l_name+1];
        float time;
};
void selection_sort(Train *tr, const int sz);
 
int _tmain(int argc, _TCHAR* argv[])
 
{
    setlocale (LC_ALL, "Rus");
    const int l_name = 9, l_num=7, l_time=17, l_buf = l_name + l_num + l_time;
    
 
    const int l_Train=100;
    Train dbase[l_Train];    
    float time;
    int num;
    char name[l_name+1];
    
    
    fstream infile;
    infile.open("dbase.txt", ios::in);
    if (!infile.is_open())
    {
        cout << "Error opening file\n";
        return 0;
    }
 
    int cnt = 0;
    while(!infile.eof())
    {
        infile >> dbase[cnt].name
               >> dbase[cnt].num
               >> dbase[cnt].time;
        ++cnt;
    };
    selection_sort(dbase, cnt);
    
    
    while (true) 
    {
        cout << "Введите время отправки поезда или 0:"; cin >>time;
        if (time==0) return 0;
        bool not_found = true;
        for (int i = 0; i < cnt; i++)
        {
            if (dbase[i].time > time)
            {               
                    cout << dbase[i].name <<' '<< dbase[i].num << ' ' << dbase[i].time << endl;
                    not_found = false;
                
            }
        }
 
    
    }
    return 0;
}
 
 
void selection_sort(Train *tr,const int sz)
{
    for (int i = 0; i < sz; ++i)
    {
        int minimum = i;
        for (int j = i + 1; j < sz; ++j)
        {
            if (strcmp(tr[j].name,tr[minimum].name) < 0)
            {
                Train temp = tr[minimum];
                tr[minimum] = tr[j];
                tr[j] = temp;
            }
        }
    }
}
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
06.05.2012, 15:30  [ТС]     Описать структуру с именем STUDENT #9
Вот что я написал.
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
134
135
136
137
138
// andrei3.cpp : Defines the entry point for the console application.
//
// 2kontrol.cpp : Defines the entry point for the console application.
//
// 2 контрольная 2 семестра.
///ОСТАЛОСЬ ОТСОРТИРОВАТЬ ГРУППЫ ПО НОМЕРУ
#include "stdafx.h"
#include <fstream>
#include <string>
#include <stdlib.h>
#include <iostream>
using namespace std;
 
const int l_name = 25, l_ysp=5;
struct trent
{
        int num;
        char name[l_name];
        char ysp[l_ysp];
        int summ[5];
};
void selection_sort(trent *tr, const int sz);
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "Rus");
   // const int l_name = 9;  
    const int l_trent=100;
    trent dbase[l_trent];    
    
    float sr;
    
    int ser=0;
    fstream infile;
    infile.open("dbase4.txt", ios::in);
    if (!infile.is_open())
    {
        cout << "Error opening file\n";
        return 0;
    }
 
    int cnt = 0;
    while(!infile.eof())
    {
        infile >> dbase[cnt].name
               >> dbase[cnt].num
               >> dbase[cnt].ysp;
        ++cnt;
    };
    selection_sort(dbase, cnt);     
    const int size=100;
    float summ[size];
 
    for (int i = 0; i < cnt; i++)
    {
        for (int k=0; k<l_ysp;k++)
        {
      
            ser=ser+dbase[i].ysp[k]-'0';    
        }
        
        summ[i]=ser/l_ysp;
        //cout <<summ[i]<<endl;
        ser=0;
        
    }
/*
    int evalbuf = 0, i;
    int numbuf = 0;
    char namebuffer[100];
    bool flag = true;
    while(flag)
    { 
        flag = false;
        for( i = 0; i < sz - 1; ++i)
        {
            if (dbase[i + 1].num < dbase[i].num)
            {
 
                
                numbuf = dbase[i].num;
                evalbuf = ysp[i] ;
                strcpy(namebuffer,dbase[i].name); 
        
                dbase[i].num = dbase[i + 1].num;
                ysp[i] = ysp[i + 1];
                strcpy(tr[i].name,tr[i + 1].name);       
    
                tr[i + 1].num = numbuf;
                ysp[i + 1] = evalbuf;
                strcpy(tr[i + 1].name, namebuffer);          
                flag = true;
            }
        }
    }
    */
 
    while (true) 
    {
        cout << "Введите средний балл студента или 0:"; cin >>sr;
        if (sr==0) return 0;
        bool not_found = true;
        for (int i = 0; i < cnt; i++)
        {
            if (summ[i]>sr)
            {               
                    cout << dbase[i].name <<' '<< dbase[i].num << ' ' << dbase[i].ysp << endl;
                    not_found = false;
                
            }
        }
 
    
    }
    
    
    return 0;
}
 
void selection_sort(trent *tr,const int sz)
{/*
    for (int i = 0; i < sz; ++i)
    {
        int pos = i;
        int tmp=0;      
        for (int j = i + 1; j < sz; ++j)
        {
            if (tr[j].num< tmp)
            {
                //pos=j;
                tmp = tr[j].num;
                tr[j].num = tr[i].num;
                tr[i].num = tmp;
            }  
        }       
    }*/
 
}
У меня не получается сделать сортировку по номерам групп.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
06.05.2012, 16:12     Описать структуру с именем STUDENT #10
Цитата Сообщение от KOPC1886 Посмотреть сообщение
for (int i = 0; i < sz; ++i)
* * {
* * * * int pos = i;
* * * * int tmp=0;* * *
* * * * for (int j = i + 1; j < sz; ++j)
* * * * {
* * * * * * if (tr[j].num< tmp)
* * * * * * {
* * * * * * * * //pos=j;
* * * * * * * * tmp = tr[j].num;
* * * * * * * * tr[j].num = tr[i].num;
* * * * * * * * tr[i].num = tmp;
* * * * * * } *
* * * * } * * *
* * }*/
если надо поменять местами два составных элемента, то можно сделать так
memcpy(tmp_elem,elem1,sizeof(Elem));
memcpy(elem1,elem2,sizeof(Elem));
memcpy(elem2,tmp_elem,sizeof(Elem));

Добавлено через 2 минуты
KOPC1886, и ещё когда элементы меняются местами счётчик надо уменьшить на 1, чтобы элемент который мы поменяли сравался с другими элементами
цикл надо двойной делать.
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
06.05.2012, 16:25  [ТС]     Описать структуру с именем STUDENT #11
Van111, Эм... я не очень понял)
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
06.05.2012, 16:42     Описать структуру с именем STUDENT #12
KOPC1886, может будет роботать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void selection_sort(trent *tr, const int sz)
{
    trent tmp;
for(int index=1;index>0;index=0)
for (int i=0;i<sz;i++)
{
    for (int j=0;j<sz;j++)
    {
        if (tr[i].num > tr[j].num)
        memcpy(tmp,tr[i],sizeof(trent);
        memcpy(tr[i],tr[j],sizeof(trent);
        memcpy(tr[j],tmp,sizeof(trent);
        index++;
    }
    
}
Добавлено через 10 минут
KOPC1886, я там чуть натупил -вот сортировка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void selection_sort(trent *tr, const int sz)
{
trent tmp;
int is=1
while(is)
{
is=0;
for (int i=1;i<=sz;i++)
{
        
        if (tr[i].num < tr[i-1].num)
        {
        memcpy(tmp,tr[i-1],sizeof(trent);
        memcpy(tr[i-1],tr[i],sizeof(trent);
        memcpy(tr[i],tmp,sizeof(trent);
        is=1;
        }
}
}    
   
    
}
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
06.05.2012, 18:19  [ТС]     Описать структуру с именем STUDENT #13
Van111, у меня 3 ошибки выскакивают
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
06.05.2012, 19:14     Описать структуру с именем STUDENT #14
KOPC1886, include "windows.h"
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
06.05.2012, 22:15  [ТС]     Описать структуру с именем STUDENT #15
Van111, все равно ошибки с memcpy
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
07.05.2012, 16:59     Описать структуру с именем STUDENT #16
Цитата Сообщение от KOPC1886 Посмотреть сообщение
Van111, все равно ошибки с memcpy
какие именно?

Добавлено через 34 секунды
а понял надо вместо tmp поставить &tmp
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
07.05.2012, 18:21  [ТС]     Описать структуру с именем STUDENT #17
Van111, везде или где?
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
07.05.2012, 18:27     Описать структуру с именем STUDENT #18
Цитата Сообщение от KOPC1886 Посмотреть сообщение
Van111, везде или где?
там где memcpy
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
07.05.2012, 18:31  [ТС]     Описать структуру с именем STUDENT #19
Van111, поставил все равно ошибки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2012, 18:51     Описать структуру с именем STUDENT
Еще ссылки по теме:

C++ Описать структуру с именем STUDENT
Описать структуру с именем Student C++
C++ Описать структуру с именем Student

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

Или воспользуйтесь поиском по форуму:
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
07.05.2012, 18:51     Описать структуру с именем STUDENT #20
KOPC1886 . Вот сортировка для двух студентов (скрин) как
видите все работает . Посмотрите на номера групп

код

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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/*
-------------   ОПИСАНИЕ РАБОТЫ  ---------
 
    1) СЧИТАЛИ С  ФАЙЛА --  ВЫВОД НА ЭКРАН 
 
    2) ОТСОРТИРОВАЛИ  --  ВЫВОД НА ЭКРАН 
 
    3) ВЫВОД НА ЭКРАН  СТУДЕНТОВ СО СР. БАЛЛОМ  БОЛЬШЕ 4.0
      ЕСЛИ НЕТ ВЫВОД СООБЩЕНИЯ,  ЧТО ТАКИХ НЕТ 
 
      ххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх
      
      Файл должен содержать 10 строк :
      фамилия студента ,  номер группы и 5 оценок :
      Например :
 
      Ivanov 4 5 7 1.5 1 1
      Petrov 2 8 2 2 3 4
      Sidorov 3 3 3 3.1 3 1
 
              и т.д.
 
 
*/
#include <iostream>
#include <string.h>
#include <fstream>
#define SIZE 10  // кол-во структур 
#define ESIZE 5   // кол-во оценок 
 
   struct Student 
{ 
     char *family;   //  ФАМИЛИЯ 
     int numgroup;  // НОМЕР ГРУППЫ  
     float *eval;     // ОЦЕНКИ 
     float  avgrade;// average grade  СРЕДНИЙ БАЛ 
    Student()
     { 
         avgrade = 0.0;//  НАЧАЛЬНАЯ ИНИЦИАЛИЗАЦИЯ  
         numgroup = 0;
         family = new char[100];
         eval = new float[ESIZE];
         
     }
     ~Student(){
         delete[]family;
         delete[]eval;} 
 
 };
 
   void readFile(Student*,const char*);// ЧТЕНИЕ ИЗ ФАЙЛА и ВЫВОД НА ЭКРАН 
   void sortData(Student*);   // СОРТИРОВКА ПО НОМЕРУ ГРУППЫ 
   void outData(Student*);   // ВЫВОД НА ЭКРАН 
   void average_grade(Student*);     // СРЕДНИЙ БАЛЛ
   void outDataAvGrade(Student* ); // ВЫВОД  ПО  СРЕДНЕМУ БАЛЛУ
 
int main()
{ 
    Student stud[SIZE];
    char filename[70] = "file.txt";
    readFile(stud, filename);
    sortData(stud );
    outData(stud );
    average_grade(stud);
    outDataAvGrade(stud);
    return 0;
}
/////////////////////////////////////////////////////////
/////   ЧТЕНИЕ ИЗ ФАЙЛА и ВЫВОД НА ЭКРАН 
void readFile(Student* stud,const char* fname)
{    
   std::ifstream infile(fname);
    for(size_t i = 0; i < SIZE; i++)
    {
    std::cout << "\nStudent's family : ";
    infile >> stud[i].family ;
    std::cout << stud[i].family ;
    std::cout << "\nGroup's number : ";
    infile >> stud[i].numgroup ;
    std::cout << stud[i].numgroup ;
    std::cout << "\nA 5 evaluations : ";
    for(size_t j = 0; j < ESIZE; j++)
    {
    infile >> stud[i].eval[j] ;
    std::cout << stud[i].eval[j] << ' ';
    }
    std::cout  << std::endl;
    }
};
 
/////////////////////////////////////////////////////////
/////    СОРТИРОВКА ПО НОМЕРУ ГРУППЫ 
/////    фамилия , оценки и номер группы 
void sortData(Student* stud)
    {
    float evalbuf[ESIZE] = {{0.0}};
    size_t numbuf = 0, i, j;
    char familybuffer[100];
    bool flag = true;
     while(flag){
 
         flag = false;
for( i = 0; i < SIZE - 1; ++i)
    {
        if (stud[i + 1].numgroup < stud[i].numgroup) {
 
        numbuf = stud[i].numgroup;
        for( j = 0; j < ESIZE; j++)
        evalbuf[j] = stud[i].eval[j] ;
        strcpy(familybuffer,stud[i].family); 
 
        stud[i].numgroup = stud[i + 1].numgroup;
        for( j = 0; j < ESIZE; j++)
        stud[i].eval[j] = stud[i + 1].eval[j] ;
        strcpy(stud[i].family,stud[i + 1].family);
 
 
        stud[i + 1].numgroup = numbuf;
        for( j = 0; j < ESIZE; j++)
        stud[i + 1].eval[j] = evalbuf[j] ;
        strcpy(stud[i + 1].family, familybuffer); 
 
        flag = true;
        }
    }
     }
    }
///////////////////////////////////////////////////////////
    //   ВЫВОД ФАМИЛИИ, НОМЕРА ГРУППЫ И ОЦЕНОК  
        //      ПОСЛЕ СОРТИРОВКИ  
void outData(Student* stud)
{     std::cout << "\nAfter sort :\n";
     for(size_t i = 0; i < SIZE; i++)
     {
         
    std::cout << "\nStudent's family : " << stud[i].family ;
    std::cout << "\nGroup's number : " << stud[i].numgroup ;
    std::cout << "\nA 5 evaluations :\n";
    for(size_t j = 0; j < ESIZE; j++)
    std::cout <<  stud[i].eval[j] << ' ';
    std::cout  << std::endl;
    }
}
 
////////////////////////////////////////////////////
    // СРЕДНИЙ БАЛЛ КАЖДОГО СТУДЕНТА  
void average_grade(Student* stud)
{
     for(size_t i = 0; i < SIZE; i++)
     {
        for(size_t j = 0; j < ESIZE; j++)
        {
        stud[i].avgrade += stud[i].eval[j];
        }
     stud[i].avgrade /=  ESIZE;
     }
}
 
///////////////////////////////////////////////////////////
    //   ВЫВОД ФАМИЛИИ  СТУДЕНТОВ СО СР. БАЛЛОМ  БОЛЬШЕ 4.0
    // ЕСЛИ НЕТ -  ВЫВОД СООБЩЕНИЯ,  ЧТО ТАКИХ НЕТ 
void outDataAvGrade(Student* stud)
{    
    bool fl = false;
    std::cout << "\nStudents with average grade > 4.0  :\n";
     for(size_t i = 0; i < SIZE; i++)
     {
        if(stud[i].avgrade > 4.0) 
        {
            fl = true;
    std::cout  << " Family  "<< stud[i].family <<  " average grade " << stud[i].avgrade;
    std::cout  << std::endl;
        }
    }
     if(!fl) std::cout << " \tnot found .";
}
Миниатюры
Описать структуру с именем STUDENT  
Yandex
Объявления
07.05.2012, 18:51     Описать структуру с именем STUDENT
Ответ Создать тему

Метки
student, student c++, описать структуру, описать структуру c++, описать структуру student c++, описать структуру student, описать структуру с именем student, структура student, структура student c++, структуры данных, структуры данных c++
Опции темы

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