Problem z funkcją sort()
Ostatnio zmodyfikowano 2011-01-07 21:03
kasprus Temat założony przez niniejszego użytkownika |
Problem z funkcją sort() » 2011-01-07 20:15:45 Witam!
Mam taki mały problem.
Otóż chcę posortować tablicę struktur według jednego elementu za pomocą wbudowanej funkcji sort(), jednak mój program nie robi tego poprawnie.
Oto mój kod:
#include<iostream> #include<algorithm> using namespace std; struct odcinek { int a; int b; }; bool cmp( odcinek a, odcinek b ) { return a.a > b.b; } int main() { odcinek tab[ 1000 ]; int a; cin >> a; int b = 0; while( b < a ) { cin >> tab[ b ].a >> tab[ b ].b; b++; } b = 0; sort( tab, tab + a, cmp ); while( b < a ) { cout << tab[ b ].a << " " << tab[ b ].b << endl; b++; } system( "pause" ); return 0; }
Nie wyświetla dobrze linijek wczytywania liczb:(. |
|
ison |
» 2011-01-07 20:36:01 nie lepiej użyć fora zamiast wydziwiać z whilem? for( int i = 0; i < a; ++i ) chciałbyś posortować strukturę ale według jakiej zmiennej? jeśli chcesz sortować według zmiennej 'a' to: bool cmp( odcinek a, odcinek b ) { return a.a > b.a; }
|
|
kasprus Temat założony przez niniejszego użytkownika |
» 2011-01-07 20:47:35 Niestety dalej nie działa. Wynik po wczytaniu=wynik przed wczytaniem. |
|
ison |
» 2011-01-07 20:54:51 to zmień kompilator :p #include<iostream> #include<algorithm> #include <cstdlib>
using namespace std;
struct odcinek { int a; int b; };
bool cmp( odcinek a, odcinek b ) { return a.a > b.a; }
int main() { odcinek tab[ 1000 ]; int a; cin >> a; int b = 0; while( b < a ) { cin >> tab[ b ].a >> tab[ b ].b; b++; } b = 0; sort( tab, tab + a, cmp ); while( b < a ) { cout << tab[ b ].a << " " << tab[ b ].b << endl; b++; } system( "pause" ); return 0; }
już pomijając sam fakt że cstdliba Ci brakowało (do funkcji system) input: 4 5 9 3 8 6 7 2 7
output: 6 7 5 9 3 8 2 7 Aby kontynuować, naciśnij dowolny klawisz . . .
|
|
kasprus Temat założony przez niniejszego użytkownika |
» 2011-01-07 21:03:47 Wielkie dzięki. Teraz już wszystko działa. |
|
« 1 » |