Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Student{
- string ident;
- float grades;
- int meters, month;
- };
- void SelectionSort (Student tab[], unsigned n, char p[] ){
- Student temp;
- if (p[0] == 'm'){
- for(unsigned int i=n-1; i>0; i--){
- unsigned int max =0;
- for(unsigned int j=1; j <= i ;j++){
- if (tab[max].month<tab[j].month)
- max = j ;
- else if (tab[max].month == tab[j].month){
- if (p[1] == 's'){
- if (tab[max].grades<tab[j].grades)
- max = j;
- else if (tab[max].grades == tab[j].grades){
- if(tab[max].meters<tab[j].meters)
- max = j;
- else if (tab[max].meters == tab[j].meters){
- if(tab[max].ident>tab[j].ident)
- max = j;
- }
- }
- }
- else if (p[1] == 'd'){
- if (tab[max].meters<tab[j].meters)
- max = j;
- else if (tab[max].meters == tab[j].meters){
- if(tab[max].grades<tab[j].grades)
- max = j;
- else if (tab[max].grades == tab[j].grades){
- if(tab[max].ident<tab[j].ident)
- max = j;
- }
- }
- }
- }
- temp = tab[i];
- tab[i] = tab[max];
- tab[max]=temp;
- }
- }
- }
- if (p[0] == 's'){
- for(unsigned int i=n-1; i>0; i--){
- unsigned int max =0;
- for(unsigned int j=1; j <= i ;j++){
- if (tab[max].grades<tab[j].grades)
- max = j ;
- else if (tab[max].grades == tab[j].grades){
- if (p[1] == 'm'){
- if (tab[max].month<tab[j].month)
- max = j;
- else if (tab[max].month == tab[j].month){
- if(tab[max].meters<tab[j].meters)
- max = j;
- else if (tab[max].meters == tab[j].meters){
- if(tab[max].ident>tab[j].ident)
- max = j;
- }
- }
- }
- else if (p[1] == 'd'){
- if (tab[max].meters<tab[j].meters)
- max = j;
- else if (tab[max].meters == tab[j].meters){
- if(tab[max].month<tab[j].month)
- max = j;
- else if (tab[max].month == tab[j].month){
- if(tab[max].ident<tab[j].ident)
- max = j;
- }
- }
- }
- }
- temp = tab[i];
- tab[i] = tab[max];
- tab[max]=temp;
- }
- }
- }
- if (p[0] == 'd'){
- for(unsigned int i=n-1; i>0; i--){
- unsigned int max =0;
- for(unsigned int j=1; j <= i ;j++){
- if (tab[max].meters<tab[j].meters)
- max = j ;
- else if (tab[max].meters == tab[j].meters){
- if (p[1] == 'm'){
- if (tab[max].month<tab[j].month)
- max = j;
- else if (tab[max].month == tab[j].month){
- if(tab[max].grades<tab[j].grades)
- max = j;
- else if (tab[max].grades == tab[j].grades){
- if(tab[max].ident>tab[j].ident)
- max = j;
- }
- }
- }
- else if (p[1] == 's'){
- if (tab[max].grades<tab[j].grades)
- max = j;
- else if (tab[max].grades == tab[j].grades){
- if(tab[max].month<tab[j].month)
- max = j;
- else if (tab[max].month == tab[j].month){
- if(tab[max].ident<tab[j].ident)
- max = j;
- }
- }
- }
- }
- temp = tab[i];
- tab[i] = tab[max];
- tab[max]=temp;
- }
- }
- }
- }
- int main()
- {
- int n;
- cin >> n;
- if (n<1 || n>1000000) return 0;
- Student Boys[n];
- Student Girls[n];
- Student temp;
- char parameters[3];
- cin >> parameters[0] >> parameters[1] >> parameters[2];
- for (int i = 0; i<n; i++){
- cin >> Girls[i].ident >> Girls[i].grades >> Girls[i].meters >> Girls[i].month >>
- Boys[i].ident >> Boys[i].grades >> Boys[i].meters >> Boys[i].month;
- }
- int tab[6] = {6, 2, 4, 8, 7, 1};
- SelectionSort(Girls,n,parameters);
- SelectionSort(Boys,n,parameters);
- for (int i = n-1; i>-1; i--){
- cout << Girls[i].ident << " " << Boys[i].ident << " ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement