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

Nie wiem dokładnie jak wykonać sortowanie

Object Storage Arubacloud
+1 głos
278 wizyt
pytanie zadane 9 maja 2016 w C i C++ przez Klasyczny Użytkownik (610 p.)

Siema,

mam do wykonania sortowanie pracowników w takim programie:

http://www.wklejto.pl/255023

W kodzie znajduje się kawałek kodu sortującego (w komentarzu) z innego programu.

Bardzo proszę o pomoc w zmodyfikowaniu tego sortowania.

komentarz 9 maja 2016 przez Klasyczny Użytkownik (610 p.)
Pomoże ktoś? :(
komentarz 9 maja 2016 przez Porcupine Nałogowiec (31,560 p.)
A czym są firma i rozmiar? Tzn. gdzie one w ogóle są zdefiniowane w Twoim programie?
komentarz 10 maja 2016 przez Klasyczny Użytkownik (610 p.)
no własnie ich nie ma, firma i rozmiar jak jak napisałem to część kodu z innego programu gdzie takie sortowanie działało. Chciałbym zrobić to na moim programie albo w inny sposób, ważne żeby było obiektowo :)
komentarz 10 maja 2016 przez bumpMind Gaduła (4,260 p.)
Podrzuć jeszcze raz ten kod - ten niestety wygasł, postaram się pomóc
komentarz 10 maja 2016 przez Klasyczny Użytkownik (610 p.)

1 odpowiedź

+1 głos
odpowiedź 11 maja 2016 przez bumpMind Gaduła (4,260 p.)

Na podstawie wrzuconego kodu zrobił bym kolejne rzeczy:

  1. Zmienił bym nazwę klasy Pracownicy na Pracownik, było by to bardziej odpowiednie dla tego co w niej przechowujesz czyli dane jednego pracownika.
  2. W obiektowości chodzi mniej więcej o zabezpieczenie danych przed niepotrzebnym dostępem do nich z innych miejsc. Na przykładzie Twojego programu zmienne:
        string imie;
        string nazwisko;
        short wiek;
        float stawka;
        short przepracowana_liczba_godzin;

    nie powinny być publicznie dostępne gdyż i tak ustawiasz je wywołując funkcje dodaj_pracownika(). Zatem zmienne te umieścił bym wcześniej w sekcji private:

  3. Mając zmienne prywatne aby uzyskać do nich dostęp np. żeby sprawdzić ich wartości powinno się dodać funkcje które na to pozwalają czyli przykładowo funkcja:

    string zwroc_imie() {
           return imie;
    }
    która po wywołaniu zwróci imię danego pracownika.
    
  4. Dalej mając tak obudowaną klasę możesz zająć się algorytmem sortowania, na początek polecam dobrze znane i lubiane sortowanie bąbelkowe ^^. Tutaj masz przystępnie wytłumaczone jak napisać sortowanie. Polecam zacząć od funkcji sortującej zwykłą tablice liczb i wtedy przejść do ostatniego pkt.
  5. Mając funkcje sortującą tablice liczb wystarczy odpowiednio pozamieniać parę rzeczy i dostosować ją do twojej klasy Pracownik:
  • zmienić argument wejściowy  tablicy int tab[] na tablice stworzonych pracowników tj. Pracownik tab[]
  • w miejscach gdzie pobierasz normalnie wartość tablicy przykładowo tab[1] trzeba poprawić kod dorzucając funkcje pobierającą wartość np wiek pracownika, czyli wystarczy dodać tab[1].zwroc_wiek();
  • zaimplementować oddzielne sortowania dla poszczególnych danych
komentarz 11 maja 2016 przez Aisekai Nałogowiec (42,190 p.)
Lepiej zamiast funkcji zwracajacej imię zwróć_imię() nazwałbym ją inaczej: getImie(), analogicznie z funkcją ustawiającą wartość zmiennej imie
komentarz 11 maja 2016 przez bumpMind Gaduła (4,260 p.)
Jasne gettery i settery zawsze się ostatecznie tak nazywa, chciałem jednak trzymać się trochę konwencji autora żeby było to bardziej dla niego czytelne
komentarz 11 maja 2016 przez Klasyczny Użytkownik (610 p.)
http://www.wklejto.pl/255164

Błędów a błędów, poprawisz co trzeba? :(
komentarz 11 maja 2016 przez bumpMind Gaduła (4,260 p.)

Nope, ale nakieruje:

  1.  public:
            string imie;
            string nazwisko;
            short wiek;
            float stawka;
            short przepracowana_liczba_godzin;

    Zmienne powinieneś przełożyć do sekcji private: znajdującą się nad public:

  2. string zwroc_stawka() {
           return stawka;
     

    Tworząc tego typu funkcje daleko nie zajdziesz, po pierwsze zawsze domykaj klamry, po drugie jeśli stawka jest typu float to funkcja też powinna zwracać typ float a nie string. Przejrzyj wszystkie funkcje czy są domknięte i czy zwracają dobry typ.

  3. int *Pracownik tab, n;

    w tym momencie pomieszałeś pojęcia typów i nazw. int* to wskaźnik na zmienną typu int, Pracownik to również typ a dokładniej klasa którą sam zadeklarowałeś, natomiast tab i n to nazwy. Chcąc stworzyć tablicę typu Pracownik powinieneś to zrobić przykładowo: Pracownik* tab - pierwsza część to typ a druga nazwa zmiennej.

  4. Zostaw narazie sortowanie i popracuj nad samym zrozumieniem i obeznaniem się ze składnią w C++ czyli dokładnie jak działają funkcje, jak tworzyć tablicę (na początek statyczną później ewentualnie dynamiczną) i ćwicz to na typach prostych jak int. Kiedy to już zrozumiesz możesz przejść na Obiekty i wtedy próbować swoich sił z sortowaniem.

Mam nadzieję że pytanie to było w ramach nauki i zrozumienia jak to działa a nie w ramach jakiegoś zadania domowego, ponieważ trochę z przykrością czuje tu kopiuj-wklej bez zrozumienia zasady działania programu byle tylko "zaliczyć" zadanie. W każdym razie powodzenia z nauką, jeśli ogarniesz wypisane powyżej zagadnienia i poprawisz wg nich swój kod a dalej nie będzie działał to zawsze możesz go tu wkleić.

Podobne pytania

0 głosów
3 odpowiedzi 369 wizyt
pytanie zadane 10 kwietnia 2016 w C i C++ przez Klasyczny Użytkownik (610 p.)
0 głosów
1 odpowiedź 265 wizyt
0 głosów
3 odpowiedzi 395 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...