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

Sortowanie przez zliczanie

Ostatnio zmodyfikowano 2016-02-03 22:19
Autor Wiadomość
LeajD
Temat założony przez niniejszego użytkownika
» 2016-02-03 20:58:52
for( int j = P[ i ]; i >= 1; j-- )
    {
        T[ k ] = i;
        k++; // tu jest k :D
    }
P-144433
carlosmay
» 2016-02-03 21:37:49
Ok, a co z tym "k" i o co chodzi w ostatniej pętli w której sie to k zwiększa?
To 'k' jest po to aby iterować po tablicy.

Można też tak:
C/C++
int k;
for( int i = 0; i < m; ++i )
for( int j = P[ i ], k = 0; i >= 1; --j, ++k )
{
    T[ k ] = i;
}
P-144434
hit
» 2016-02-03 21:49:04
Generalnie zmieniasz ten kod, nie przepisałeś go od razu w całości, więc ciężko jest Ci pomóc. Wklejaj go na bieżąco zamiast modyfikować pierwszy post. Co do zmiennej 'm' to mogę się tylko domyślać, czy to miał być właśnie rozmiar maksymalny tablicy - to Ty masz to opisane w książce.
Zmienna 'k' w takim wykorzystaniu nie jest potrzebna, bo równie dobrze można się posłużyć zmienną 'i'
P-144435
mateczek
» 2016-02-03 22:19:05
C/C++
for( int i = 0; i < m; i++ ) Na pocz ą tku sprawdzasz liczb ę zero
for( int j = P[ i ]; i >= 1; j-- ) //p[0] będzie zawierało ilość wysąpień liczby 0
{
    T[ k ] = i; // jeśli w tablicy wystąpiło "0" wysąpiło 3 razy pętla wykona się 3 razy!!! 
    k++;
}
jeszcze w jednym miejscu źle przepisałeś  !!!
masz cały kod
C/C++
#include <iostream>

using namespace std;
int main() {
    const int rozmiar = 10;
    int T[ rozmiar ] { 1, 3, 1, 3, 3, 3, 2, 4, 2, 4 };
   
    int P[ 4 + 1 ] { 0 }; //maksymalna liczba w tablicy!!
   
    for( int i = 0; i < rozmiar; i++ ) P[ T[ i ] ] ++;
   
    cout << "jedynka wysapila " << P[ 1 ] << "razy" << endl;
    cout << "dwojka wysapila " << P[ 2 ] << "razy" << endl;
    cout << "trojka wysapila " << P[ 3 ] << "razy" << endl;
    cout << "czworka wysapila " << P[ 4 ] << "razy" << endl;
    int k = 0;
    for( int i = 0; i <= 4; i++ ) //Na początku sprawdzasz liczbę zero
    for( int j = P[ i ]; j >= 1; j-- ) //p[0] będzie zawierało ilość wysąpień liczby 0
    {
        T[ k ] = i; // jeśli w tablicy wystąpiło "0" wysąpiło 3 razy pętla wykona się 3 razy!!!
        k++;
    }
   
    for( int i = 0; i < rozmiar; i++ )
         cout << T[ i ] << " ";
   
    cout << endl;
}
P-144436
1 « 2 »
Poprzednia strona Strona 2 z 2