CodeMeister |
» 2012-08-03 17:38:20 no fakt... morzowy :) potwór
@tirou - ja wogóle nie wiem jak się sortuje przez kopcowanie (a może jednak wiem tylko nazwy nie znam :) tylko że zwróciłem na to dzielenie int-ów przez dwa... |
|
tirou Temat założony przez niniejszego użytkownika |
» 2012-08-03 20:00:30 w sumie to jest algorytm podany na tej stronce http://edu.i-lo.tarnow.pl/inf/alg/003_sort/0017.php o sortowaniach, jednak nie rozumiem gdzie popelniam bład w moim kodzie.
Ja po prsotu ujałem go w funkcje. Jeżeli ktoś inteligentny i oznajmiony z C++ chciałby się nauczyc sortować przez kopcowanie oraz przesledzic mój kod. Z góry serdecznie dziękuję. |
|
kamillo121 |
» 2012-08-05 01:43:23 Witam, Twój kod to nie jest kod objęty funkcjami z podanej strony. Jeżeli decydujesz się na objęcie czyjegoś kodu funkcjami musisz też przyjąć założenia programu napisanego przez kogoś. Przepisałeś cały kod ale w kilku miejscach prawdopodobnie zmieniłeś po swojemu albo omyłkowo napisałeś inaczej. Twój kod: #include <iostream> #include <cstdlib> using namespace std; void budujkop( int[], int ); void rozlozkop( int[], int ); void sort( int[], int n ); void swap( int &, int & );
int main() { const int n = 20; int d[ n ]; for( int i = 0; i < n; i++ ) { d[ i ] = rand() % 10; cout << d[ i ] << " "; } sort( d, n ); cout << "\nPosortowana: \n\n"; for( int i = 0; i < n; i++ ) { cout << d[ i ] << " "; } }
Zamień na: #include <iostream> #include <cstdlib> #include <time.h> using namespace std; void budujkop( int[], int ); void rozlozkop( int[], int ); void sort( int[], int n ); void swap( int &, int & ); int main() { srand(( unsigned ) time( NULL ) ); const int n = 20; int d[ n + 1 ]; for( int i = 1; i <= n; i++ ) { d[ i ] = rand() % 10; cout << d[ i ] << " "; } sort( d, n ); cout << "\nPosortowana: \n\n"; for( int i = 1; i <= n; i++ ) { cout << d[ i ] << " "; } }
Twój kod: if(( k + 1 < i ) &&( d[ k + 1 ] > d[ k ] ) ) int m = k + 1; else m = k;
zamień na: if(( k + 1 < i ) &&( d[ k + 1 ] > d[ k ] ) ) m = k + 1; else m = k;
|
|
tirou Temat założony przez niniejszego użytkownika |
» 2012-08-05 15:52:47 Jeśli mogę zadać pytanie, dlaczego inicjalizujemy tablica d[n+1] ? Bo z tym się wiąże późniejsze zaczęcie odliczania w pętli od i=1; i<=n Dlaczego zaczynamy od 1 a nie tak jak w c++ od 0 (tak jak odliczane są tablice ?) |
|
mostrom |
» 2012-08-05 16:27:59 W c++ 5/2 = 2, a nie 3 A przy inicjowaniu piszesz rzeczywisty wymiar tablicy, np int tabl[ 6 ]; oznacza że tabl jest tablicą sześciu elementów typu int, ale dostęp do tych elementów masz po wpisaniu indeksu liczonego od 0, np for( int i = 0; i < 6; i++ ) { tabl[ i ] = i; } |
|
tirou Temat założony przez niniejszego użytkownika |
» 2012-08-05 19:28:47 @up - to co napisales jest oczywiste, tlyko nie rozumiem dlaczego kamillo zmienił mi kod, zwiększając ilość elementów tablicy o 1 (nie rozumiem na co to wpływa )
@edit. Może to wynika z tego, iż nie dokońca rozumuje to sortowanie. tzn rozumiem algorytm ale nie potrafię go zaimplementowac ;( |
|
kamillo121 |
» 2012-08-06 00:41:42 @up - to co napisales jest oczywiste, tlyko nie rozumiem dlaczego kamillo zmienił mi kod, zwiększając ilość elementów tablicy o 1 (nie rozumiem na co to wpływa )
@edit. Może to wynika z tego, iż nie dokońca rozumuje to sortowanie. tzn rozumiem algorytm ale nie potrafię go zaimplementowac ;(
|
Powiem Ci tyle(nawet nie wgłębiając się w sam algorytm sortowania), wynika to z tego, że autor algorytmu tak zorganizował kod. Twój problem polega na tym, że przepisałeś czyjś kod ale chyba nie zaznajomiłeś się z kodem i z samym algorytmem. Radzę najpierw poczytać o tym algorytmie, o jego sposobie działania a po tym dokładnie prześledzić kod. Ja wprowadziłem zmiany które spowodowały to, że algorytm działa prawdopodobnie poprawnie. Tak powracając to tak szczerze Ci powiem, że jeżeli rozumiesz algorytm na 90% to raczej go w ogóle nie rozumiesz. Zrozum go w 100% i wtedy zabierz się za kodowanie. |
|
tirou Temat założony przez niniejszego użytkownika |
» 2012-08-06 16:57:59 Tak wprowadziłeś zmiany, które spowodowały że program działa poprawnie, dziekuje ci za to i prześledze go. |
|
1 « 2 » |