Sortowanie tablicy struktur względem wybranego elementu z użyciem funkcji sort.
Program losuje 10 rekordów (każdy po trzy liczby - kolumny/a/b/c.
W pierwszym przebiegu program sortuje rekordy według kolumny a.
W drugim przebiegu program sortuje rekordy według kolumny b - niezależnie od wartości w kolumnie a.
W trzecim przebiegu program sortuje rekordy według kolumny c - niezależnie od wartości w kolumnach a i b.
-
#include<iostream>
-
#include<algorithm>
-
#include<ctime>
-
using namespace std;
-
-
struct dane
-
{
-
int a;
-
int b;
-
int c;
-
};
-
-
bool cmpA(dane,dane);
-
bool cmpB(dane,dane);
-
bool cmpC(dane,dane);
-
-
int main()
-
{
-
srand(time(NULL));
-
dane T[10];
-
-
for(int i=0;i<10;i++)
-
{
-
T[i].a=rand()%100+1;
-
T[i].b=rand()%100+1;
-
T[i].c=rand()%100+1;
-
}
-
-
//dane przed sortowaniem
-
cout<<"\ndane przed sortowaniem";
-
for(int i=0;i<10;i++)
-
cout<<"\nrekord "<<i<<"\t"<<T[i].a<<"\t"<<T[i].b<<"\t"<<T[i].c<<" ";
-
-
//dane posortowane wzgledem .a
-
cout<<"\n\ndane po sortowaniu kol:a";
-
sort (T,T+10,cmpA) ;
-
for(int i=0;i<10;i++)
-
cout<<"\nrekord "<<i<<"\t"<<T[i].a<<"\t"<<T[i].b<<"\t"<<T[i].c<<" ";
-
-
//dane posortowane wzgledem .b
-
cout<<"\n\ndane po sortowaniu kol:b";
-
sort (T,T+10,cmpB) ;
-
for(int i=0;i<10;i++)
-
cout<<"\nrekord "<<i<<"\t"<<T[i].a<<"\t"<<T[i].b<<"\t"<<T[i].c<<" ";
-
-
//dane posortowane wzgledem .c
-
cout<<"\n\ndane po sortowaniu kol:c";
-
sort (T,T+10,cmpC) ;
-
for(int i=0;i<10;i++)
-
cout<<"\nrekord "<<i<<"\t"<<T[i].a<<"\t"<<T[i].b<<"\t"<<T[i].c<<" ";
-
}
-
-
-
bool cmpA(dane A,dane B)
-
{
-
-
return A.a<B.a;
-
}
-
-
-
bool cmpB(dane A,dane B)
-
{
-
-
return A.b<B.b;
-
}
-
-
-
bool cmpC(dane A,dane B)
-
{
-
-
return A.c<B.c;
-
}
-
Zobacz działenie powyższego kodu w kompilatorze online >>>.