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

Упорядочить записи структуры по фамилии - C++

Восстановить пароль Регистрация
 
VALIDOL4IK
11 / 2 / 5
Регистрация: 09.09.2011
Сообщений: 60
18.12.2013, 13:33     Упорядочить записи структуры по фамилии #1
Помогите сделать пожалуйста. Дана структура. Нужно сделать упорядочивание по фамилии [name]. Заранее, спасибо.
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
#include <iostream>
#include <string>
using namespace std; 
 
struct STUDENT // структура STUDENT
{ 
    string name; //фамилия
    int group; 
    float ses[10];
    float sr;
};
 
int main() 
{   
    setlocale(0,"rus");// подключение русского языка
    const int size = 3; // количество студентов ИЗМЕНИТЬ НА 10!
    STUDENT stud1[size]; // массив 
    int i, j;  
    int n = 0; // счётчик студентов
    int count = 0; // счётчик студентов с плохими отметками 
                   // если он равен количеству студентов значит  
                   // хорошистов нет
    const int o = 3; //количество оценок
    
 
    for ( i = 0; i < size; i++)  // ввод информации
    { 
        cout << "Введите фамилию студента " << endl; 
        cin >> stud1[n].name; 
        cout << "Введите номер группы " << endl; 
        cin >> stud1[n].group; 
        cout << "Введите 3 оценки " << endl; 
        for (int i = 0; i < o; i++) 
        cin >> stud1[n].ses[i]; 
        n++;
        
    } 
   cout<<"Хорошисты"<<endl;
   
    for ( i = 0; i < size; i++) 
    {
        for (j = 0; j < 3; j++) 
            stud1[n].sr += stud1[i].ses[j]; 
          
            if(stud1[n].sr / o > 8.0) // условие хорошиста
            { 
                cout << stud1[i].name << endl; // вывод хорошистов
                cout << stud1[i].group << endl;
                cout << stud1[n].sr/o <<endl;
            }  
            else  
                count++;
 
            stud1[n].sr = 0;
        }  
    if(count == size) 
        cout << "Такие студенты отсутствуют " << endl; 
 
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2013, 13:33     Упорядочить записи структуры по фамилии
Посмотрите здесь:

C++ Структуры. Вывести фамилии студентов.
C++ Структуры: Сведения об автомобиле состоят из номера, марки, фамилии владельца, признака прохождения техосмотра
C++ Ввести массив записей, который содержит фамилии сотрудников и адреса. Записи упорядочить по адресам.
Работа с символьными данными. Упорядочить фамилии по алфавиту C++
задача стоит так : Список фамилий вводится через запятую в виде строки. Упорядочить фамилии по алфавиту C++
Упорядочить элементы структуры C++
C++ Структуры. По фамилии выдать информацию о читателе библиотеки
Получить из БД фамилии и упорядочить их C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
18.12.2013, 15:15     Упорядочить записи структуры по фамилии #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
#include <iostream>
#include <algorithm>
 
const size_t sizeSession = 3;
 
struct STUDENT // ñòðóêòóðГ* STUDENT
{ 
    std::string name; //ГґГ*ìèëèÿ
    int group; 
    float ses[sizeSession];
    float sr;
};
 
void input(STUDENT & st)
{
  std::cout << "Input name: "; std::cin >> st.name;
  std::cout << "Input group: "; std::cin >> st.group;
  std::cout << "Input ses: " << std::endl;
  for(int i = 0; i < sizeSession; ++i)
     std::cin >> st.ses[i];
 
  std::cout << "Input sr: "; std::cin >> st.sr;
}
 
void print(STUDENT & st)
{
  std::cout << "Name: " << st.name;
  std::cout << "Group: " << st.group;
  std::cout << "Ses: ";
  for(int i = 0; i < sizeSession; ++i)
     std::cout << st.ses[i] << " ";
  std::cout << std::endl;
 
  std::cout << "Sr: " << st.sr;
}
 
 
bool valid(STUDENT & st1, STUDENT & st2)
{
     return st1.name < st2.name; 
}
 
int main()
{   
    const size_t SIZE = 3;
    STUDENT  stud[SIZE];
    std::for_each(stud, stud + SIZE, input);
    std::sort(stud, stud + SIZE, valid);
    std::for_each(stud, stud + SIZE, print);
        
    system("PAUSE");
    return 0;
}
VALIDOL4IK
11 / 2 / 5
Регистрация: 09.09.2011
Сообщений: 60
19.12.2013, 13:33  [ТС]     Упорядочить записи структуры по фамилии #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
#include <iostream>
#include <string>
using namespace std; 
 
struct STUDENT // структура STUDENT
{ 
    char name[40]; 
    int group; 
    float ses[10];
    float sr;
};
 
int main() 
{   
    setlocale(0,"rus");// подключение русского языка
    const int size = 2; // количество студентов ИЗМЕНИТЬ НА 10!
    STUDENT stud1[size],tmp; // массив 
    int i, j;  
    int n = 0; // счётчик студентов
    int count = 0; // счётчик студентов с плохими отметками 
                   // если он равен количеству студентов значит  
                   // хорошистов нет
    const int o = 3; //количество оценок
    
 
    for ( i = 0; i < size; i++)  // ввод информации
    { 
        cout << "Введите фамилию студента " << endl; 
        cin >> stud1[n].name; 
        cout << "Введите номер группы " << endl; 
        cin >> stud1[n].group; 
        cout << "Введите 3 оценки " << endl; 
        for (int i = 0; i < o; i++) 
        cin >> stud1[n].ses[i]; 
        n++;
        
    } 
//сортировка
for (i=0; i<n; i++){
for (j=n-1; j>i; j--){
    if (strcmp(stud1[j-1].name, stud1[j].name)>0){
        tmp=stud1[j];
        stud1[j]=stud1[j-1];
        stud1[j-1]=tmp;
    }
}
}
   cout<<"Хорошисты"<<endl;
   
    for ( i = 0; i < size; i++) 
    {
        for (j = 0; j < 3; j++) 
            stud1[n].sr += stud1[i].ses[j]; 
          
            if(stud1[n].sr / o > 8.0) // условие хорошиста
            { 
                cout << stud1[i].name << endl; // вывод хорошистов
                cout << stud1[i].group << endl;
                cout << stud1[n].sr/o <<endl;
            }  
            else  
                count++;
 
            stud1[n].sr = 0;
        }  
    if(count == size) 
        cout << "Такие студенты отсутствуют " << endl; 
 
 
    return 0;
}
Yandex
Объявления
19.12.2013, 13:33     Упорядочить записи структуры по фамилии
Ответ Создать тему
Опции темы

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