klasy i proster sortowanie
Ostatnio zmodyfikowano 2011-05-23 16:01
Irokezkez Temat założony przez niniejszego użytkownika |
klasy i proster sortowanie » 2011-05-22 23:02:32 Mam mały problem, skorzystałem z prostego sorotowania: #include <cstdlib> #include <iostream> #include <algorithm> #include <functional> #include<conio.h> #include <string.h>
using namespace std;
int main( int argc, char * argv[] ) { cout << "Ile miejsc zarezerwowac w bazie danych ?" << endl; int ile; cin >> ile; int tablica[ ile ]; cout << "Podaj " << ile << " liczb" << endl; for( int i = 0; i < ile; i++ ) { cin >> tablica[ i ]; } sort( tablica, tablica + ile ); cout << "Tablica posortowana malejaco: \n"; for( int i = 0; i < ile; i++ ) { cout << tablica[ i ] << endl; } system( "PAUSE" ); return EXIT_SUCCESS; }
Wszystko ładnie działa, jednak problem pojawia się gdy dodaje klasy. #include <cstdlib> #include <iostream> #include <algorithm> #include <functional> #include<conio.h> #include <string.h> using namespace std;
class uczen { public: int ocena; string nazwisko; };
int main( int argc, char * argv[] ) { cout << "Ile miejsc zarezerwowac w bazie danych ?" << endl; int ile; cin >> ile; uczen tablica[ ile ]; cout << "Podaj " << ile << " liczb" << endl; for( int i = 0; i < ile; i++ ) { cin >> tablica[ i ].ocena; } sort( tablica, tablica + ile ); cout << "Tablica a posortowana malejaco: \n"; for( int i = 0; i < ile; i++ ) { cout << tablica[ i ].ocena << endl; } system( "PAUSE" ); return EXIT_SUCCESS; }
Próbowałem w miejscu sort( tablica, tablica + ile ); sort( tablica.wynik + ile );
|
|
DejaVu |
» 2011-05-22 23:05:45 Musisz albo przeciążyć operator< oraz operator!= dla klasy po której chcesz sortować, albo napisać strukturę sortującą i podać ją jako 3 argument funkcji std::sort. |
|
ison |
» 2011-05-23 16:01:40 class uczen { public: int ocena; string nazwisko; };
bool mniejsze( uczen a, uczen b ) { return a.ocena < b.ocena; }
... sort( tablica, tablica + ilosc, mniejsze );
|
|
« 1 » |