[C++] Sortowanie alfabetyczne wierszy w pliku.
Ostatnio zmodyfikowano 2015-01-12 10:41
Myraa Temat założony przez niniejszego użytkownika |
[C++] Sortowanie alfabetyczne wierszy w pliku. » 2015-01-07 21:13:34 Witam! Próbuję napisać program, który posortuje mi alfabetycznie wiersze w pliku bez wczytywania całej zawartości. Niestety nie mam za bardzo pomysłu co zrobić. Póki co wpadłem na tyle, ale niestety nawet to nie działa poprawnie. Z góry dziękuję za pomoc. while( !plik.eof() ) { getline( plik, linia1 ); getline( plik, linia2 ); if( linia1 > linia2 ) { linia2.swap( linia1 ); plik << linia1 << endl; plik << linia2 << endl; } }
|
|
NopeDotAvi |
» 2015-01-07 21:30:20 wczytaj do jakiegoś vectora i potem użyj std::sort przeanalizuj ten przykład: (c++11) #include <iostream> #include <vector> #include <string> #include <algorithm>
int main() { std::vector < std::string > v; v.push_back( "Foo" ); v.push_back( "Boo" ); v.push_back( "Test" ); for( const auto & it: v ) std::cout << it << std::endl; std::sort( v.begin(), v.end() ); for( const auto & it: v ) std::cout << it << std::endl; return 0; }
|
|
Myraa Temat założony przez niniejszego użytkownika |
» 2015-01-07 21:35:11 Wolałbym to zrobić bez wykorzystania vectorów. Mógłby ktoś podesłać jakieś materiały, albo wytłumaczyć jak to zrobić inaczej? |
|
darko202 |
» 2015-01-07 22:42:11 |
|
Myraa Temat założony przez niniejszego użytkownika |
» 2015-01-08 14:54:53 Miałby ktoś jeszcze jakiś pomysł? Chciałem to zrobić na zasadzie sortowania bąbelkowego. Mam coś takiego, ale wcale nie działa lepiej. while( posortowano == false ) { posortowano = true; for( int i = 0; i <= licz; i++ ) getline( plik, linia1 ); while( !plik.eof() ) { getline( plik, linia2 ); if( linia1 > linia2 ) { posortowano = false; linia2.swap( linia1 ); } plik2 << linia1 << endl; cout << linia1 << endl; } licz++; }
Pomoże ktoś? Nikt? :( |
|
michal11 |
» 2015-01-09 14:36:39 Po 1. nie minęły jeszcze nawet 24h Po 2. jeżeli ktoś umiałby ci pomóc to pewnie już by to zrobił Po 3. myślisz, że takie regularne podbijanie tematu coś pomoże ? |
|
Piastlis |
» 2015-01-09 22:53:09 Jeżeli chcesz posortować plik to istnieją dwa warianty. Pierwszy jest taki że plik jest mały i można go zgrać do tablicy .Wtedy możesz operować indeksami i sortowanie bąbelkowe jest jak najbardziej na miejscu. Jeżeli plik jest ogromny i nie mieści się do pamięci kompa to sortowanie bąbelkowe się nie sprawdza.Po prostu trzeba stworzyć tyle plików tymczasowych ile jest elementów do posortowania a że jest ich bardzo dużo czas posortowania byłby niewyobrażalnie długi. Moja rada : najpierw posortuj bąbelkowo tablicę wierszy a potem poczytaj o algorytmach sortowania plików. Podręcznik nazywa się Pascal a autor to Niklaus Wirth. Nie jest to kurs tylko podręcznik akademicki ale są pokazane elementarne algorytmy wykorzystania struktur danych.Jak wskazuje nazwa i nazwisko autora wszystkie przykłady są w pascalu:) |
|
1aam2am1 |
» 2015-01-10 11:13:33 Nie lepiej zastosować quick sort |
|
« 1 » 2 |