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: 45 9
 3 8
 6 7
 2 7
 
 output: 6 75 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 » |