Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak posortować plik binarny bez użycia tablic.

Ostatnio zmodyfikowano 2014-01-28 15:48
Autor Wiadomość
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ć.
P-103083
kubawal
» 2014-01-24 18:31:53
bez użycia tablic.
Użyj vectora albo listy.
P-103085
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.

Użyj vectora albo listy.
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.
P-103086
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.

C/C++
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();
}
P-103415
« 1 »
  Strona 1 z 1