C sortowanie liczb w szyku malejącym
Ostatnio zmodyfikowano 2012-10-04 21:41
ziommus Temat założony przez niniejszego użytkownika |
C sortowanie liczb w szyku malejącym » 2012-10-04 20:25:26 Witam, nie mogę odnaleźć błędu w moim kodzie programu którego zadaniem jest posortowanie liczb w szyku malejącym. Podczas wyświetlania "posortowanej" dynamicznej tablicy na pierwszym miejscu wyświetla mi wartość losową. #include <stdio.h> #include <stdlib.h> #define liczba_elementow 3
int main() { int * tab; int temp; int i, j; tab = malloc( liczba_elementow * sizeof( int ) ); for( i = 0; i < liczba_elementow; ++i ) { printf( "Podaj element nr %d: ", i ); scanf( "%d",( tab + i ) ); } for( i = 0; i <=( liczba_elementow - 1 ); ++i ) { for( j = i + 1; j <= liczba_elementow; ++j ) { if( *( tab + i ) < *( tab + j ) ) { temp =*( tab + i ); *( tab + i ) =*( tab + j ); *( tab + j ) = temp; } } } printf( "\n" ); for( i = 0; i < liczba_elementow; ++i ) { printf( "%d ", *( tab + i ) ); } free( tab ); system( "pause" ); return 0; } Dodam, że ten sam program ale z przeciwnym warunkiem w instrukcji if poprawnie sortuje w szyku rosnącym. Za pomoc z góry dziękuję. |
|
cyklopek11 |
» 2012-10-04 21:06:05 Twoje sortowanie bąbelkowe powinno wyglądać tak ( namieszałeś z indeksami "i" oraz "j"): ... for( i = 0; i <( liczba_elementow - 1 ); ++i ) { for( j = 0; j < liczba_elementow - 1; ++j ) { if( *( tab + j ) < *( tab + j + 1 ) ) { temp =*( tab + j ); *( tab + j ) =*( tab + j + 1 ); *( tab + j + 1 ) = temp; } } } ...
|
|
ziommus Temat założony przez niniejszego użytkownika |
» 2012-10-04 21:27:17 Niestety ta poprawka nic nie dała, bo dalej mam jeden element tablicy z wartością losową tyle, że tym razem jest to element o indeksie 1. |
|
cyklopek11 |
» 2012-10-04 21:36:16 Czekaj w pierwszej pętli bez jedynki :-) ... for( i = 0; i < liczba_elementow; ++i ) { for( j = 0; j < liczba_elementow - 1; ++j ) { if( *( tab + j ) < *( tab + j + 1 ) ) { temp =*( tab + j ); *( tab + j ) =*( tab + j + 1 ); *( tab + j + 1 ) = temp; } } } ... |
|
ziommus Temat założony przez niniejszego użytkownika |
» 2012-10-04 21:41:37 Sorry, faktycznie w drugiej pętli for ostał mi się znak '=', dzięki za pomoc. |
|
« 1 » |