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

[C/C++] Sortowanie przez proste wstawianie

Ostatnio zmodyfikowano 2014-06-23 16:55
Autor Wiadomość
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:

C/C++
#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 );
}
P-112498
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ą.
P-112583
« 1 »
  Strona 1 z 1