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

Sortowanie bąbelkowe tablicy


Rekomendowane odpowiedzi

Opublikowano

Witam. Ostatnio opublikowałem swoją aplikację (QRM). Ulepszając ją, chciałem dodać możliwość sortowania wpisów. Chciałem to zrobić na zasadzie tej funkcji:

http://www.algorytm.org/algorytmy-sortowania/sortowanie-babelkowe-bubblesort/bubble-5-c.html

Ale mam problem. Plik, w którym są zapisane wpisy aplikacje wyglądają tak:


nazwa
sciezka do nazwa
nazwa1
sciezka do nazwa1
nazwa2
sciezka do nazwa2

 

 

Teraz mam problem, ponieważ gdy posortuje tablicę nazwa, to ścieżki dostępu do aplikacje się wymieszają. Ma ktoś jakiś pomysł aby temu zaradzic?

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

I sortować tą pierwszą? Mógłbym to zrobić na zasadzie tymczasowej tablicy? Czyli do tej tablicy upchać dwie i ją posortować?

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Zrób sobie jakąś prostą strukturę z dwoma polami. Jedno to 'nazwa', a drugie 'ścieżka'. Zrób tablicę tych struktur i posortuj je według pól 'nazwa'

Opublikowano

Zrób sobie jakąś prostą strukturę z dwoma polami. Jedno to 'nazwa', a drugie 'ścieżka'. Zrób tablicę tych struktur i posortuj je według pól 'nazwa'

 

Trzeba będzie się pouczyć o strukturach :D W Symfonii C++ jestem dopiero na preprocesorze.. właściwie kończe

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Alternatywnie, jak wspomniałem wcześniej

 

Sortujesz tylko parzyste komórki tablicy i zamieniasz miejscami dwa stringi obok siebie na raz.

Ta sygnatura jest pusta.

Opublikowano

 

Trzeba będzie się pouczyć o strukturach :D W Symfonii C++ jestem dopiero na preprocesorze.. właściwie kończe

Będę chyba kod programu przepisywać od nowa... Myślisz ze jak zrobię dynamiczna strukture i tablice zmienie na vectory to będzie ok? Czyli rozumiem ze jak posortuje jeden vector to ten drugi i tak będzie należał do niego? Ten drugi który jest z nim w strukturze.

 

 

@edit: uznałem że vector to zły pomysł, zostane przy klasach

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano
bool funkcjaPorownujaca(const Wpis& wpis1, const Wpis& wpis2)
{
     return std::lexicographical_compare(wpis1.nazwa.begin(),wpis1.nazwa.end(),wpis2.nazwa.begin(),wpis2.nazwa.end()); //z algorithm
}
struct Wpis
{
string nazwa;
string costam;
};

vector<Wpis> wpisy;
//dodajesz wpisy
...
...
std::sort(wpisy.begin(), wpisy.end(), funkcjaPorownujaca);

Pisane na szybko, mniej więcej tak to powinno wyglądać.

 

 

#edit

zmieniłem nazwe funkcji, bo była zła

Opublikowano

Dzięki. Mógłbyś wyjaśnić co robi funkcja sortująca? Zwraca wartość true, false wiec domyślam się ze sprawdza czy wymagane jest sortowanie. Z tym vectorem to rozumiem ze wpisuje do niego stringi, sortuje kontener i kopiuje do stringów z powrotem za pomocą pętli? Pytanie do struktury, jeśli nie znam rozmiaru struktury, to muszę utworzyć strukturę dynamiczną i dać jej wielkość ilości linii w pliku /2? I jak wpisać do struktury wpis o nazwie 1, 2... ogólnie wartości zmiennej, czyli np wpisy 1

Co do tej funkcji bool to co jeśli mam więcej wpisów?

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Źle ją trochę nazwałem

To jest funkcja porównująca dwie wartości string leksykograficznie. Zwraca true jeśli pierwszy element jest wcześniej. std::sort używa później tej funkcji do ustalania kolejności.

 

Z tym vectorem to rozumiem ze wpisuje do niego stringi, sortuje kontener i kopiuje do stringów z powrotem za pomocą pętli?

 

Wrzucasz tam obiekty klasy Wpis. Później po std::sort w tym samym vectorze masz już posortowane elementy.

 

I jak wpisać do struktury wpis o nazwie 1, 2... ogólnie wartości zmiennej, czyli np wpisy 1

 

"1", "2". W ogóle jakoś nazwa będąca liczbą mi nie pasuje. Dziwny pomysł.

Opublikowano

Dzięki, a co z resztą pytań? Ostatnie pytanie tez jest do tej funkcji

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Z tym vectorem to tak jak napisałeś, po sortowaniu musze z powrotem go przenieść do stringów czy nie? A ta nazwa to przykład, chodziło mi o to aby nazwa była zmienna

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano
Ostatnie pytanie tez jest do tej funkcji

 

Już wyjaśniłem

To jest funkcja porównująca dwie wartości string leksykograficznie.

 

 

Z tym vectorem to tak jak napisałeś, po sortowaniu musze z powrotem go przenieść do stringów czy nie?

 

 

Później po std::sort w tym samym vectorze masz już posortowane elementy.

 

Opublikowano

Dzięki wam za odpowiedzi. Skontaktowałem się z Phoenixem i doszliśmy do wniosku że można zrobić po prostu dynamiczną tablicę tablica[n][2]. Lajki rozdane :D

 

//CLS

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...