• 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

Object Storage Arubacloud
0 głosów
368 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ź 278 wizyt
pytanie zadane 9 maja 2016 w C i C++ przez Klasyczny Użytkownik (610 p.)
0 głosów
1 odpowiedź 261 wizyt
0 głosów
3 odpowiedzi 391 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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!

...