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

Сортировка массива структур - C++

Восстановить пароль Регистрация
 
ZevS13
1 / 1 / 0
Регистрация: 05.12.2010
Сообщений: 15
14.04.2011, 23:51     Сортировка массива структур #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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream> 
#include <iomanip>
#include <algorithm>
#include <list>
using namespace std;
struct  Student                     
 {
   char Name[20];           //  Имя
   double Propusk;        //  Пропуск
   int Uvagit;                      //  Уважительный пропуск
   double Vpropusk;                 //Пропуск в ведомость
   double Procprop;         //Процент пропусков 
   bool operator < ( const Student a )
        {
             return Procprop < a.Procprop;
        }
 };
typedef list<Student> entry;
int main()
{
    int n;
    entry elist;
    double s1,s2,s3;
    setlocale(0,"rus");
    cout<<"Формирование записи"<<endl;
    cout<<"Введите количество студентов";
    cin>>n;
    Student *zapis=new Student [n];
    
    cout <<"Документ должен сожержать "<<n<< " строки - записи: \n";
         for( int i=0; i < n; i++)
      {
cout << "\nФормирование  " << i + 1 <<  "  записи";
cout << "\nВведите имя студента(не более 20 символов:   ";
cin >>  zapis[i].Name;      // Доступ к элементу а экземпляра структуры zapis[i]
                                   // выполняется операцией точка (.)
cout << "\nУкажите число пропущенных часов студентом(целое число)  : \n";
cin >>  zapis[i].Propusk;       // Доступ к элементу t экземпляра структуры zapis[i]
cout << "\nУкажите число пропущенных часов студентом по уважительной причине(целое число)  : \n";
cin >>  zapis[i].Uvagit;       // Доступ к элементу k экземпляра структуры zapis[i]
    }
         //  Выполнение расчетов:
      s1=0;s2=0;s3=0;
      for(int i=0; i < n; i++)
       {
          zapis[i].Vpropusk=zapis[i].Propusk-zapis[i].Uvagit;
          zapis[i].Procprop=(zapis[i].Vpropusk/zapis[i].Propusk)*100;
                s1 += zapis[i].Propusk;
                s2 += zapis[i].Uvagit;
                s3 += zapis[i].Vpropusk;
            
       }
      //  Построение "шапки" таблицы
 
    system("cls"),
    cout << "\n      Ведомость посещения занятий студентами:       ";
    cout <<endl<<"|------------------------------------------------------------------------------|";
    cout <<endl<<"|n|Фамилия     |Пропусков|Уважительный пропусков|Пропус в ведом.  |Проц.  проп.|";
    cout <<endl<<"|------------------------------------------------------------------------------|";
 
// Заполнение таблицы данными:
    for(int i=0;i<n;i++)
    
    cout << "\n|" << setw(1) << i+1 << "|" << setw(12) << zapis[i].Name << "|"
 
    << setw(9) << setprecision(3) << zapis[i].Propusk << "|"
 
    << setw(22) << setprecision(3)<<  zapis[i].Uvagit << "|"
    << setw(17) << setprecision(3)<< zapis[i].Vpropusk <<"|"
    << setw(12) << setprecision(3)<<zapis[i].Procprop << "|";
    cout <<endl<<  "|------------------------------------------------------------------------------| ";
    cout <<endl<<  "|ИТОГ:" << setw(19) << setprecision(3) << s1
    << "|" << setw(22) << setprecision(3) << s2<< "|" <<setw(17) << setprecision(3) << s3 << "|" 
    << setw(13) << setprecision(3) << "|";
    cout << "\n|------------------------------------------------------------------------------|"<<endl;
 
 
 
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 23:51     Сортировка массива структур
Посмотрите здесь:

C++ Сортировка массива структур
C++ Сортировка массива структур
Сортировка массива структур C++
C++ Сортировка массива структур
Сортировка массива структур C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
15.04.2011, 00:11     Сортировка массива структур #2
Ты попробуй функцие стандартной qsort

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
int  st_cmp(const void* st1, const void* st2) {
     Student*  _st1 = (Student*) st1;
     Student*  _st2 = (Student*) st2;
     if( _st1->Propusk < _st2->Propusk)
            return 0;
     return 1;
}
 
 
 
void  main() {
 
    Student  st[3];
    memset(st, 0, sizeof(st));
    st[0].Propusk = 1000;
             st[1].Propusk = -1000;
    st[2].Propusk = 10;
 
    size_t  size = sizeof(st) / sizeof(Student);
 
    qsort((void*)st, size, sizeof(Student), st_cmp);
 
    for(int i = 0; i < size; i++)
            printf("%f\n", st[i].Propusk);
 
    getchar();
}
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
15.04.2011, 00:41     Сортировка массива структур #3
2 вопроса, зачем обнулять эту область памяти?
C++
1
        memset(st, 0, sizeof(st));
и вводить эту сущность, если нами задано количество студентов?
C++
1
size_t  size = sizeof(st) / sizeof(Student);
Тгда уж макрос лучше исползовать или перменную
C++
1
int kol_vo_stud 3;
Однажды инициализировать и всё, хотя я может чего-то недопонимаю.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
15.04.2011, 01:07     Сортировка массива структур #4
kravam, чего ты не понимаешь это просто пример наглядный я не хотел заполнением структуры заниматься показал как отдельный элемент в структуре сортировать по нему весь массив структур, думать надо чем говорить, уже вижу твою слабую логику...
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
15.04.2011, 01:15     Сортировка массива структур #5
Ой извините нас грешных вашему величеству вопрос задать осмелились...
silent_1991
15.04.2011, 01:26     Сортировка массива структур
  #6

Не по теме:

xAtom, в гневных сообщениях (как, впрочем, и в любых других, если говорить о вашем высочестве) не помешали бы знаки препинания.

Yandex
Объявления
15.04.2011, 01:26     Сортировка массива структур
Ответ Создать тему
Опции темы

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