• 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

+1 głos
481 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 852 wizyt
pytanie zadane 10 kwietnia 2016 w C i C++ przez Klasyczny Użytkownik (610 p.)
0 głosów
1 odpowiedź 544 wizyt
0 głosów
3 odpowiedzi 589 wizyt

93,600 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,085 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

Kursy INF.02 i INF.03
...