Template i sortowanie

0

Problem polega na tym aby sortowanie np. bąbelkowe dostosować do wprowadzanych danych (chodzi o template), czyli zeby sortowal i liczby i pojedyncze znaki wstawiane do tablicy.

Prosze o podanie miajsca (w zamieszczonym kodzie) gdzie i co pozamieniac aby coś takiego było możliwe

int koniec,i,tmp,tab[10];

for (i=0;i<10;i++)
{cout<<"Podaj "<<i<<" wartosc"<<endl;
cin>>tab[i];}
do
{
koniec=1;
for (i=0;i<10;i++)
{
if (tab[i]>tab[i+1])
{
tmp=tab[i];
tab[i]=tab[i+1];
tab[i+1]=tmp;
koniec=0;
}
}
} while (koniec==0);

0

nie chce mi sie analizowac tego kodu , ale powinno wystarczyc jesli powiem, ze mozna sortowac kazdy typ, jezeli ma on zdefiniowany operatory porownania (<, >, ==). po prostu tworzysz szablon, i w jego funkcji sortujacej wstawiasz kod sortujacy (najszybszy jest quick sort), jezeli porownanie bedzie niemozliwe to kompilator poinformuje cie o tym.

0

No własnie trzeba utworzyć szablon (template) ale nie mam pojecia w którym miejscu go wstawic do kodu i jak pozamieniac moje zmienne int aby kożystały z tego szablonu.

0

Jak widze chodzi Ci o sortowanie babelkowe. Oto kod szablonu funkcji sortujacej babelkowo. Jako patrametry podajesz wskaznik do poczatku tablicy(czyli po prostu jej nazwe) oraz ile ma ona elementow. Jak ktos juz wyzej napisal musza byc zdefiniowane operatory > oraz = (bo tylko te sa uzywane).

template<class TYP>
void sortuj(TYP * tab,int ile)
{
int koniec,i;
TYP tmp;
do
{
koniec=1;
for (i=0;i<10;i++)
{
if(tab[i]>tab[i+1])
{
tmp=tab[i];
tab[i]=tab[i+1];
tab[i+1]=tmp;
koniec=0;
}
}
}
while(koniec==0);

0

bardzo dziekuje.

wszytko dziala jak nalezy

wielkie dzieki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1