Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

c++ sortowanie struktur


Rekomendowane odpowiedzi

Opublikowano

Cześć ;)

 

Mam tablicę struktur. Struktura ma taką budowę

 

struct Pracownicy {
    string imie;
    string nazwisko;
    short wiek;
    float stawka;
    short godziny;
};

I teraz  chciałbym aby w zależności od wybranej opcji wyświetlić całe struktury w kolejności. Tam gdzie wiek jest największy struktura pojawi sie na początku i potem reszta struktur ułożona malejąco wg wieku.

 

Nie mam w ogóle pomysłu jak się do tego zabrać. Nie chcę używać vectorów (chyba że w ostateczności).

Obama wie, co robisz!!!
131894.jpg                                                                                                                                                    4906167742.png

                                                                                                                                                                                                                                                                                      LTE Play Opole

Opublikowano

Możesz dać funkcję wyrażenie lambda jako trzeci parametr do std::sort.

#include <algorithm>

struct teststruct {
	int somevalue;
	int somevalue2;
	short someothervalue;
	char* somepointer;

};

int _tmain(int argc, _TCHAR* argv[])
{	
	teststruct str1[] = { { 1, 5, 4, (char*)4 }, { 5, 3, 3, (char*)11 }, { 3, 7, 6, (char*)15 }, { 9, 2, 1, (char*)44 } };
	std::sort(str1, str1 + 4, [](teststruct t1, teststruct t2) {
		return t1.someothervalue < t2.someothervalue;
	});
	return 0;
}

Wynik: http://prntscr.com/aoji7r

 

http://en.cppreference.com/w/cpp/algorithm/sort

Skończ proszę się kompromitować. Jesteś nikim.

Opublikowano

@ᕦ( ͡° ͜ʖ ͡°)ᕤ

Coś pewnie namieszałem bo nie bangla jak powinno :/

Mam taki kod

void sortuj(Pracownicy *pracownik, int wg) {

    

    switch(wg) {

        case 1:

            sort(pracownik, pracownik+2, [](Pracownicy w1, Pracownicy w2) {

                return w1.wiek < w2.wiek;

                });

            break;

        case 2:

            sort(pracownik, pracownik+2, [](Pracownicy w1, Pracownicy w2) {

                return w1.stawka < w2.stawka;

                });

            break;

        case 3:

            sort(pracownik, pracownik+2, [](Pracownicy w1, Pracownicy w2) {

                return w1.godziny < w2.godziny;

                });

            break;

    }

}

Podczas kompilacji dostaję taki komunikat

[Error] no matching function for call to 'sort(Pracownicy*&, Pracownicy*, sortuj(Pracownicy*, int)::__lambda0)'

edit:

 

Jak to mam teraz wyświetlić? wstawiając w1 do pętli dostaję komunikat, że zmienna nie została zadeklarowana..

Wiem, że pewnie to jest prozaiczne pytanie i wgl ale już śpię i połowy rzeczy nie ogarniam

Obama wie, co robisz!!!
131894.jpg                                                                                                                                                    4906167742.png

                                                                                                                                                                                                                                                                                      LTE Play Opole

Opublikowano

 

Do przeczytania:

http://www.algorytm.edu.pl/tablice-w-c/tablica-a-wskaznik.html

for(int i = 0; i < 2; i++) 
    cout << pracownik[i].wiek << " " << pracownik[i].stawka << " " << pracownik[i].godziny << "\n";

Miałem pętle a w niej chciałem wyświetlać zmienne z wyrażenia lambda.... Zmęczenie robi swoje

 

Ogólnie już działa jak powinno ;)

 

Dzięki wszystkim za pomoc

 

Temat do zamknięcia

Obama wie, co robisz!!!
131894.jpg                                                                                                                                                    4906167742.png

                                                                                                                                                                                                                                                                                      LTE Play Opole

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...