Sortowanie tablicy dwuwymiarowej
Ostatnio zmodyfikowano 2020-01-07 20:16
Kerni Temat założony przez niniejszego użytkownika |
Sortowanie tablicy dwuwymiarowej » 2020-01-06 15:24:40 Proszę o wyjaśnienie. Próbuję posortować tablicę 2-wymiarową. Z tablica 1 wymiarową sobie poradziłem używając funkcji sort(). Chciałbym posortować poniższą tablicę wg wybranej kolumny, lub wg 2 kolumn w zadanej kolejności (nazwisko a potem imię). #include <string> #include <algorithm> #include <iostream>
using namespace std;
int main() { string ** osoba; int k = 2; int w = 5; osoba = new string *[ w ]; for( int i = 0; i < 15; i++ ) { osoba[ i ] = new string[ k ]; } osoba[ 0 ][ 0 ] = "Adamski"; osoba[ 0 ][ 1 ] = "Zenek"; osoba[ 1 ][ 0 ] = "Ganski"; osoba[ 1 ][ 1 ] = "Dariusz"; osoba[ 2 ][ 0 ] = "Bryl"; osoba[ 2 ][ 1 ] = "Barbara"; osoba[ 3 ][ 0 ] = "Tobiasz"; osoba[ 3 ][ 1 ] = "Alicja"; osoba[ 4 ][ 0 ] = "Kos"; osoba[ 4 ][ 1 ] = "Janek"; for( int i = 0; i < 5; i++ ) { cout << osoba[ i ][ 0 ] << " " << osoba[ i ][ 1 ] << endl; } }
|
|
pekfos |
» 2020-01-06 16:03:41 |
|
Kerni Temat założony przez niniejszego użytkownika |
» 2020-01-07 20:16:16 Dziękuję bardzo za odpowiedź. Poprawiłem kod. #include <string> #include <algorithm> #include <iostream> #include<cstdlib>
using namespace std; struct osoba { std::string imie, nazwisko; bool operator <( osoba & x ) { return nazwisko < x.nazwisko; } };
int main() { osoba osoby[ 5 ]; osoby[ 0 ].nazwisko = "Adamski"; osoby[ 0 ].imie = "Zenek"; osoby[ 1 ].nazwisko = "Adamski"; osoby[ 1 ].imie = "Dariusz"; osoby[ 2 ].nazwisko = "Bryl"; osoby[ 2 ].imie = "Barbara"; osoby[ 3 ].nazwisko = "Tobiasz"; osoby[ 3 ].imie = "Alicja"; osoby[ 4 ].nazwisko = "Kos"; osoby[ 4 ].imie = "Janek"; cout << "Przed sortowaniem" << endl; for( int i = 0; i < 5; i++ ) { cout << osoby[ i ].nazwisko << " " << osoby[ i ].imie << endl; } osoba * wsk = osoby; sort( osoby, osoby + 5 ); cout << " "; cout << "Po posortowaniu " << endl; for( int i = 0; i < 5; i++ ) { cout << osoby[ i ].nazwisko << " " << osoby[ i ].imie << endl; } }
Generalnie kod działa, ale zapewne muszę doczytać o sortowaniu. Nie do końca rozumiem tę część. Póki co program sortuje mi tylko po nazwisku. bool operator <( osoba & x ) { return nazwisko < x.nazwisko; }
Jeszcze raz dziękuję. |
|
« 1 » |