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

Jak posortować obiekty klasy?

VPS Starter Arubacloud
0 głosów
910 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,340 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ź 299 wizyt
0 głosów
1 odpowiedź 133 wizyt
0 głosów
0 odpowiedzi 274 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...