• 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 w danym programie

0 głosów
939 wizyt
pytanie zadane 10 kwietnia 2016 w C i C++ przez Klasyczny Użytkownik (610 p.)
przywrócone 11 kwietnia 2016 przez event15

Witam,

mam do wykonania sortowanie w danym programie:

O to link do kodu programu:

http://www.wklejto.pl/252580

Próbowałem wykonać sortowanie za pomocą takich informacji:
http://cpp0x.pl/dokumentacja/standard-C++/sort/350

lecz niestety nie działa i nie wiem dokładnie co tu zdziałać.

Bardzo bym prosił o pomoc w napisaniu takiego sortowania.

3 odpowiedzi

+1 głos
odpowiedź 10 kwietnia 2016 przez Radfler VIP (101,030 p.)
wybrane 10 kwietnia 2016 przez Klasyczny
 
Najlepsza

Może na początek błędy:

1. W C++ nie ma czegoś takiego jak VLA. Oznacza to, że ten kod

cout << "Ile chcesz wprowadzic pracownikow?: " << endl;
cin >> rozmiar;
cout << "Ponizej wprowadz " << rozmiar << " pracownikow" << endl;
 
pracownicy firma[rozmiar];

jest błędny. Użyj wektora (std::vector), albo ewentualnie wskaźników i operatorów new/delete.

2. Taki zapis w C++

sort (firma, firma + rozmiar < int > () );

to błąd składniowy, tak nie można.


Rozumiem, że chcesz posortować pracowników zgodnie z wiekiem (od najstarszego do najmłodszego)... użyj wyrażenia lambda (C++11)

std::sort(firma, firma + rozmiar, [](const pracownicy& lhs, const pracownicy& rhs){
  return lhs.wiek > rhs.wiek;
});

lub funkcji globalnej.

 

komentarz 10 kwietnia 2016 przez Klasyczny Użytkownik (610 p.)
pracuje w dev c++ wiec wywala mi błąd (jeśli chodzi o wyrażenie lambda), mogę to inaczej zapisać?
komentarz 10 kwietnia 2016 przez Radfler VIP (101,030 p.)

Użyj funkcji globalnej:

// definicja klasy pracownik...
bool porownaj(const pracownicy& lhs, const pracownicy& rhs){
  return lhs.wiek > rhs.wiek;
}
// main...

A potem sortuj tak:

sort (firma, firma + rozmiar, porownaj);

 

komentarz 10 kwietnia 2016 przez Klasyczny Użytkownik (610 p.)
Jak teraz to można wyświetlić na ekranie?

np. po naciśnięciu klawisza 1?
komentarz 10 kwietnia 2016 przez Radfler VIP (101,030 p.)

Ale co chcesz wyświetlić? Pracowników? Masz przecież gotową funkcję wyswietl.

komentarz 10 kwietnia 2016 przez Klasyczny Użytkownik (610 p.)
tak ale chce zrobić coś takiego że po np. wciśnięciu 1 wyświetla mi posortowane dane pracowników wg wieku.
komentarz 10 kwietnia 2016 przez Radfler VIP (101,030 p.)
cout << "Wybierz sortowanie: \n 1 = WIEK\n 2 = STAWKA\n 3 = PRZEPRACOWANE " << endl;

Dobra, już chyba wiem o co Ci chodzi. Będziesz musiał w instrukcji switch przełączyć się między różnymi trybami sortowania (sortownia według wieku, stawki itp.). Oznacza to też, że dla każdego takiego trybu będziesz musiał przygotować inną funkcję porównującą. Będzie to wyglądało mniej więcej tak:

 cout << "Wybierz sortowanie: \n 1 = WIEK\n 2 = STAWKA\n 3 = PRZEPRACOWANE " << endl;

int tryb; cin >> tryb;

switch(tryb) {
  case 1:
    sort(firma, firma + rozmiar, porownaj_wiek);
    break;
  // inne tryby
}

wyswietl(firma); // wyświetl posortowaną firmę

 

komentarz 10 kwietnia 2016 przez Klasyczny Użytkownik (610 p.)
mam jeszcze problem z wyświetlaniem liczb.

Wpisuje stawka '2000', a po wyświetleniu na ekranie wychodzą np.taka liczba: 2e+008.
komentarz 10 kwietnia 2016 przez Radfler VIP (101,030 p.)

Spróbuj dać na początku main coś takiego:

cout << fixed;

Jeżeli nie zadziała, to może po prostu coś źle wpisujesz...

+1 głos
odpowiedź 10 kwietnia 2016 przez Patryk Krajewski Nałogowiec (26,170 p.)
Szybko zmień "Bardzo bym prosił o napisanie takiego sortowania" na Bardzo bym prosił o pomoc w napisaniu takiego sortowania. Bo nie można prosić o gotowe rozwiązanie.
komentarz 10 kwietnia 2016 przez Klasyczny Użytkownik (610 p.)
Wiadomo, nie to miałem na myśli.

:)
0 głosów
odpowiedź 11 kwietnia 2016 przez event15 Szeryf (93,790 p.)
Skoro dostałeś odpowiedź na pytanie i dałeś jej NAJ to nie ukrywaj swojego pytania.

Podobne pytania

+1 głos
1 odpowiedź 597 wizyt
pytanie zadane 9 maja 2016 w C i C++ przez Klasyczny Użytkownik (610 p.)
0 głosów
1 odpowiedź 627 wizyt
0 głosów
3 odpowiedzi 669 wizyt

93,765 zapytań

142,721 odpowiedzi

323,373 komentarzy

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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...