Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sortowanie tablicy dwuwymiarowej

Ostatnio zmodyfikowano 2020-01-07 20:16
Autor Wiadomość
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ę).

C/C++
#include <string>
#include <algorithm>
#include <iostream>

using namespace std;

int main()
{
    string ** osoba;
    int k = 2; //(1 Nazwisko 2 Imie)
    int w = 5; // liczba osob
   
    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";
   
    //tutaj funkcja sortujaca wg zadanej kolumny
   
    for( int i = 0; i < 5; i++ )
    {
        cout << osoba[ i ][ 0 ] << " " << osoba[ i ][ 1 ] << endl;
    }
}



P-175980
pekfos
» 2020-01-06 16:03:41
To nie jest zadanie dla tablicy dwuwymiarowej, tylko tablicy struktur.
» Kurs C++ » Poziom 5Struktury lekcja
» Kurs C++ » Poziom 5Wprowadzenie do standardowych algorytmów lekcja tu masz przykład sortowania.
P-175981
Kerni
Temat założony przez niniejszego użytkownika
» 2020-01-07 20:16:16
Dziękuję bardzo za odpowiedź.
Poprawiłem kod.


C/C++
#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.
C/C++
bool operator <( osoba & x )
{
    return nazwisko < x.nazwisko;
}

Jeszcze raz dziękuję.
P-175987
« 1 »
  Strona 1 z 1