[C/C++] Sortowanie przez proste wstawianie
Ostatnio zmodyfikowano 2014-06-23 16:55
adsal Temat założony przez niniejszego użytkownika |
[C/C++] Sortowanie przez proste wstawianie » 2014-06-22 15:13:53 Witam mam pewien problem związany z programem sortującym. Gdy wprowadzam liczby do posortowania takie jak np.: 2, 8, 3, 9, 4, 1 program wyrzuca: 1, 3, 4, 4, 9, 9 Co powoduje że program gubi cyfry? Czy mógłby mnie ktoś jakoś nakierować, podać wskazówkę, która umożliwi mi rozwiązanie problemu? Poniżej wklejam listing zawierający kod programu: #include "stdafx.h" #include <stdio.h>
#define MAXTAB 99
int wczytaj_liczbe( int min, int max ) { int liczba; do { printf( "podaj liczbe calkowita z zakresu <%d-%d>?", min, max ); scanf( "%d", & liczba ); } while( liczba >= max || liczba <= min ); return liczba; }
void przesun_1_w_gore( int * tab, int from, int to ) { int k; for( k = to; !( k == to + 1 ); k++ ) { tab[ k ] = tab[ k - 1 ]; } }
int _tmain( int argc, _TCHAR * argv[] ) { int tablica[ MAXTAB ]; int ile, i, j, min, minpos; printf( "\n\nJestem program sortujacy\n\nile liczb chcesz sortowac\n" ); scanf( "%d", & ile ); for( i = 0; i < ile; i++ ) { printf( "Wczytuje liczbe nr. %d \n", i + 1 ); tablica[ i ] = wczytaj_liczbe( 0, 999 ); } for( i = 0; i < ile; i++ ) { min = tablica[ i ]; minpos = i; for( j = i; j < ile; j++ ) { if( tablica[ j ] < min ) { min = tablica[ j ]; minpos = j; } } przesun_1_w_gore( tablica, j, minpos ); tablica[ i ] = min; } printf( "\nPosortowane:" ); for( i = 0; i < ile; i++ ) printf( "\nliczba nr. %d : %d", i, tablica[ i ] ); getchar(); getchar(); getchar(); return( 0 ); }
|
|
pekfos |
» 2014-06-23 16:55:42 W funkcji przesun_1_w_gore() nie używasz nigdzie from i pętla nie wygląda na prawidłową. |
|
« 1 » |