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

Pomoc z #pragma pack()

Ostatnio zmodyfikowano 2017-01-26 22:36
Autor Wiadomość
yamaha
Temat założony przez niniejszego użytkownika
Pomoc z #pragma pack()
» 2017-01-22 20:30:44
Witam serdecznie. Mam problem, a mianowicie mam zadanie polegające na sprawdzeniu szybkości działania algorytmów sortowania. Dokładnie muszę zbadać takie zjawisko:
                     "Jaki wpływ na szybkość sortowania ma rozmiar elementu tablicy – 1B, 2B, 4B, 8B,… A jeśli
                     rozmiar elementu nie jest potęgą liczby 2 (uwaga! Użyj #pragma pack())?

                     Testuj algorytmy dla zbiorów danych o różnym rozmiarze i różnej charakterystyce: dane losowe,
                     tablice posortowane, tablice prawie posortowane, tablice posortowane w porządku malejącym,
                     tablice o niewielu unikalnych wartościach."

Absolutnie nie mam zielonego pojęcia jak się za to zabrać, jak wygenerować takie dane, które będą spełniały takie właściwości, nie mam zielonego pojęcia co robi i jak działa #pragma pack() :/
P-156798
pekfos
» 2017-01-22 22:00:21
Użyj struktury z polem bitowym.
P-156801
yamaha
Temat założony przez niniejszego użytkownika
» 2017-01-24 22:02:54
No dobra. A jak porównać czas sortowania różnych typów zmiennych? W sensie stworzylem sobie tablicę intów i zobaczyłem ile czasu zajmuje posortowanie takiej tablicy dla różnej wielkości danych wejściowych. Jak mogę stworzyć teraz tablicę np shortów albo long long? Jak alokuje dynamiczną tablicę, to nie ma znaczenia czy robię ją z shortów czy z intów czy też long long, sizeof tej tablicy zawsze wywala mi 4, a chciałbym mieć rózne wielkości tych danych.
P-156898
pekfos
» 2017-01-24 22:17:14
Jak alokuje dynamiczną tablicę, to nie ma znaczenia czy robię ją z shortów czy z intów czy też long long, sizeof tej tablicy zawsze wywala mi 4, a chciałbym mieć rózne wielkości tych danych.
Jak alokujesz dynamiczną tablicę, sam dobrze wiesz, ile masz w niej danych. sizeof się tu nie nadaje, bo zwraca rozmiar wskaźnika.
P-156899
mokrowski
» 2017-01-24 22:54:18
Pokaż jak tworzysz te tablice/struktury.
P-156902
yamaha
Temat założony przez niniejszego użytkownika
» 2017-01-25 19:19:59
C/C++
#pragma pack(push,1)
struct A
{
    char a;
    short c;
};
#pragma pack(pop)

bool sortuj_a( const A & wg1, const A & wg2 )
{
    return wg1.a < wg2.a;
}

/*...*/

// Tutaj wypełniam tablicę:

int main()
{
    int size;
    cin >> size;
   
    A * tab = new A[ size ];
    for( int i = 0; i < size; i++ )
    {
        tab[ i ].a =( rand() % size );
       
    }
   
    sort( tab, tab + size, sortuj_a );
}

I chciałbym zmierzyć czas sortowania struktury 3 bitowej, ponieważ muszę sprawdzić jak zmienia się czas sortowania, gdy rozmiar elementów tablicy nie jest potęgą dwójki.[/i]
P-156937
mokrowski
» 2017-01-25 22:50:15
Otocz kod znacznikami formatowania [cpp] i [/cpp].
P-156955
mokrowski
» 2017-01-25 23:51:24
Ok, to tylko taka mała uwaga. Zanim będziesz generował losowe wartości, wywołaj srand(X) gdzie X będzie jakąś liczbą. Ponieważ chcesz aby wartości losowe z uruchomienia na uruchomienie się powtarzały :-) (czyli nie inicjuj od time(NULL) bo będą zawsze różne ciągi)
Tu masz kawałek którym czasem mierzę wykonanie kodu. Kompilować zgodnie z C++11. Jak będziesz chciał to sobie uprościsz.
http://wklej.to/tgZ4E
P-156958
« 1 » 2 3
  Strona 1 z 3 Następna strona