• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak posortować obiekty klasy?

0 głosów
1,133 wizyt
pytanie zadane 30 sierpnia 2015 w C i C++ przez k222 Nałogowiec (30,150 p.)
Ostatnio zacząłem zaprzyjaźniać się z klasami i użyłem jednej do zadania http://pl.spoj.com/problems/PP0506A/ (Sort 1) ze SPOJA i wszystko pięknie się wpisuje oraz wyświetla tylko pojawił się problem gdy muszę posortować obiekty wegług jednej zmiennej. Próbowałem jakoś przerobić najpierw quicksort a potem sortowanie bąbelkowe tak żeby współdziałało z klasą ale niezbyt wyszło. Czy mógłby ktoś na przykładzie tego programu pokazać mi jak posortować obiekty w tym programie według zmiennej z:

#include <iostream>
#include <math.h>

using namespace std;

class punkt
{
    string nazwa;
    int x,y;
    double z;
public:

    void wczytaj()
    {
        cin>>nazwa>>x>>y;
    }
    void odleglosc()
    {
        z = sqrt(pow((double)x,2) + pow((double)y,2));
    }
    void sprawdz()
    {
        cout<<"x = "<<x<<" y = "<<y<<" odleglosc od srodka: "<<z<<endl;
    }

};

 

int main()
{
    int ile, punkty;
    cin>>ile;
    for(int a=0 ; a < ile; a++)
    {
        cin>>punkty;
        punkt t[punkty];

        for(int i = 0; i < punkty; i++)
        {
            t[i].wczytaj();
            t[i].odleglosc();
            t[i].sprawdz();
        }

    }
    return 0;
}

1 odpowiedź

0 głosów
odpowiedź 30 sierpnia 2015 przez krecik1334 Maniak (58,390 p.)

Napisz własny operator w klasie punkt np.

bool operator<(const punkt &p) const
{
   return this->x  <  p.x;
}

lub własny komparator jako 3 argument do funkcji sort, np.

bool comp(punkt p1, punkt p2)
{
   return p1.x < p2.x;
}

wywołujesz:

 sort(tab, tab+n, comp);

Możesz wybrać 1 lub 2 opcje jak ci wygodniej.

komentarz 30 sierpnia 2015 przez Adrian1999 Nałogowiec (34,570 p.)
Krecik, a taka prośba mógłbyś wyjaśnić mi co ten kod oznacza? Mam problem zwykle z tym ,,This" raz to jest raz nie ma nie wiem o co chodzi, gdybym mógł ciebie prosić o wytłumaczenie tego. EW. kogoś kto to przeczyta :D
komentarz 30 sierpnia 2015 przez krecik1334 Maniak (58,390 p.)
To taki wskaźnik na obiekt, dla którego została wywołana dana metoda.
komentarz 30 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)

Nie źebym wnikał ale this jest niepotrzebny...

samo x wystarczy.

komentarz 30 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)

This to wskaźnik na obiekt, który aktualnie wywołuje daną metodę. Zazwyczaj kompilator dodaje go niejawnie, więc nie trzeba go ciągle używać, ale gdy jest kolizja oznaczeń, to się bardzo przydaje. Także jeśli chcesz zwrócić wskaźnik danego obiektu.

komentarz 30 sierpnia 2015 przez krecik1334 Maniak (58,390 p.)
Ja wolę pisać bo w bardziej skomplikowanym kodzie się przydaje (zwiększa czytelność).
komentarz 30 sierpnia 2015 przez daan Pasjonat (17,640 p.)
Wcale nie zwiększa czytelności, wręcz przeciwnie :P jak masz nawalone wszędzie pełno wskaźników this to ciężej się czyta ten kod :) This powinno się używać tylko w miejscach gdzie jest to konieczne tak jak @Patrycjerz napisał.
komentarz 30 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)
Może chodziło mu o małe funkcje?

W sumie to w małych funkcje to nawet ładniej wygląda.

Ale w dużych już nie tak wesoło.
komentarz 30 sierpnia 2015 przez daan Pasjonat (17,640 p.)
Nie przekonuje mnie argument, że coś ładniej wygląda :) Moim zdaniem po prostu jak nie ma potrzeby go używać to się nie powinno tego robić :P
komentarz 30 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)
Ja nie używam i po prostu jak nie jest potrzebny to go po prostu nie używam.

Moim zdaniem w programowaniu: "czytelniej" = "ładnie"

I pisząc "ładniej" miałem na myśli że kod jest troszeczkę czytelniejszy, ale jak kto woli.

Podobne pytania

0 głosów
1 odpowiedź 374 wizyt
0 głosów
1 odpowiedź 174 wizyt
0 głosów
0 odpowiedzi 327 wizyt

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...