Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/35: Рейтинг темы: голосов - 35, средняя оценка - 4.57
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
1

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

27.04.2012, 22:44. Показов 7324. Ответов 38

Author24 — интернет-сервис помощи студентам
Всем привет) Не могу решить задачу.
Описать структуру с именем 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;
            }
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2012, 22:44
Ответы с готовыми решениями:

Описать структуру с именем STUDENT
1. Описать структуру с именем STUDENT, содержащую следующие поля: фамилия и инициалы; номер...

Описать структуру с именем STUDENT
1. Описать структуру с именем STUDENT, содержащую следующие поля: • NAME - фамилия и инициалы; •...

Описать структуру с именем STUDENT
Описать структуру с именем STUDENT, содержащую поля: - фамилия и инициалы; - номер группы; -...

Описать структуру с именем STUDENT
как подогнать это 1. Описать структуру с именем STUDENT, содержащую следующие поля: • NAME -...

38
54 / 54 / 10
Регистрация: 26.09.2011
Сообщений: 186
27.04.2012, 23:36 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 и что-то к чему-то прибавлять не имеет смысла. Надо править
1
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
30.04.2012, 18:35  [ТС] 3
denys_l, так как тогда написать то??

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

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

Добавлено через 23 часа 4 минуты
Может кто-нибудь ответить то????
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
30.04.2012, 19:10 4
KOPC1886, вот мое исполнение , "черновик " но
работает Ошибки в структурах и массивах
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
01.05.2012, 19:55  [ТС] 5
MrCold, а как отсортировать группы по номеру, в том топике код не сортирует.
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.05.2012, 20:28 6
С файлом KOPC1886 уж сами как нибудь справляйтесь - тем много таких
Миниатюры
Описать структуру с именем STUDENT  
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.05.2012, 22:13 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  
1
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
04.05.2012, 21:18  [ТС] 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;
            }
        }
    }
}
1
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
06.05.2012, 15:30  [ТС] 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;
            }  
        }       
    }*/
 
}
У меня не получается сделать сортировку по номерам групп.
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
06.05.2012, 16:12 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, чтобы элемент который мы поменяли сравался с другими элементами
цикл надо двойной делать.
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
06.05.2012, 16:25  [ТС] 11
Van111, Эм... я не очень понял)
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
06.05.2012, 16:42 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;
        }
}
}    
   
    
}
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
06.05.2012, 18:19  [ТС] 13
Van111, у меня 3 ошибки выскакивают
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
06.05.2012, 19:14 14
KOPC1886, include "windows.h"
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
06.05.2012, 22:15  [ТС] 15
Van111, все равно ошибки с memcpy
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
07.05.2012, 16:59 16
Цитата Сообщение от KOPC1886 Посмотреть сообщение
Van111, все равно ошибки с memcpy
какие именно?

Добавлено через 34 секунды
а понял надо вместо tmp поставить &tmp
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
07.05.2012, 18:21  [ТС] 17
Van111, везде или где?
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
07.05.2012, 18:27 18
Цитата Сообщение от KOPC1886 Посмотреть сообщение
Van111, везде или где?
там где memcpy
0
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
07.05.2012, 18:31  [ТС] 19
Van111, поставил все равно ошибки
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
07.05.2012, 18:51 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  
0
07.05.2012, 18:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2012, 18:51
Помогаю со студенческими работами здесь

Описать структуру с именем Student
Вот задание . Описать структуру с именем Student, содержащую следующие поля: name – имя, group –...

Описать структуру с именем student
Нужна помощь в решении задачи в Borland C, 16. Ввести структуру СТУДЕНТ с полями ФИО, ГОД...

Описать структуру с именем STUDENT
Помогите пожалуйста написать программу на C++ для Visual Studio. Описать структуру с именем...

Описать структуру с именем STUDENT
Пожалуйста помогите! Описать структуру с именем STUDENT, содержащую следующие поля: • NAME -...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru