Jak posortować plik binarny bez użycia tablic.
Ostatnio zmodyfikowano 2014-01-28 15:48
Yourin Temat założony przez niniejszego użytkownika |
Jak posortować plik binarny bez użycia tablic. » 2014-01-24 18:29:43 Witam, mam problem opisany w temacie, piszę projekt na Programowanie w C++ i potrzebuję pomocy z posortowaniem rekordów w pliku binarnym według nazwisk bez użycia tablic. Chodzi mi o pomysł jak taki schemat sortowania powinien wyglądać. |
|
kubawal |
» 2014-01-24 18:31:53 |
|
pekfos |
» 2014-01-24 18:35:49 Dwa sąsiednie rekordy mają razem ten sam rozmiar, niezależnie od kolejności. Wczytaj dwa, porównaj, zapisz w odpowiedniej kolejności w te same miejsce. Reszta jak w innych algorytmach sortujących, opartych o zamienianie sąsiednich elementów. std::vector<> to też tablica. Poza tym, jak w treści zadania jest napisane, że nie można używać tablic, to znaczy, że nie można wczytywać całego pliku. Użycie innego kontenera też będzie nieprawidłowe. |
|
Yourin Temat założony przez niniejszego użytkownika |
» 2014-01-28 15:48:41 Napisałem taką funkcję, nie wiem jak bardzo jest ona głupia, ale póki co nic innego nie przychodzi mi do głowy. Zapętla się ona w nieskończoność. Zastanawia mnie czy to przez używanie stringów w plikach binarnych czy to nie ma znaczenia jak tylko przypisuję jako zmienne. void sortowanie() { uczniowie uczen; string zmienna1, zmienna2, temp; int i = 0; fstream sortowanie( "uczniowie.dat", ios::in | ios::out | ios::binary ); while( 1 ) { if( sortowanie.eof() ) break; sortowanie.seekp( sizeof( struct uczniowie ) *( i ) ); zmienna1 = uczen.nazwisko; sortowanie.seekp( sizeof( struct uczniowie ) *( i + 1 ) ); zmienna2 = uczen.nazwisko; if( zmienna1 > zmienna2 ) { temp = zmienna1; zmienna1 = zmienna2; zmienna2 = temp; } i++; sortowanie.write( reinterpret_cast < char *>( & uczen ), sizeof( uczen ) ); } sortowanie.close(); }
|
|
« 1 » |