Witam !
Tak jak w temacie... Mam problem w tym, że sortuje mi dobrze daną tablicę dopiero po którejś inicjalizacji sortowania...
Dana struktua
struct klub {
char nazwa[MAX_CHAR];
unsigned int liga; // 3 ligi
unsigned int licz_kibice;
unsigned int licz_stadion;
unsigned int budzet;
unsigned int poz;
};
Funkcja sortujaca - wsk_team to wskaznik na cala tablice, a decyzja to int przechowujacy nasza decyzje wedlug czego mamy sortowac
int porownanie_string(struct klub *wsk_team,unsigned int j,unsigned int i)
{
return (strcmp((*(wsk_team+i)).nazwa, (*(wsk_team+j)).nazwa) >= 0) ? 1 : 0;
}
void sort_wyb (struct klub *wsk_team, unsigned int decyzja) {
unsigned int i,i_pom,j;
struct klub pom;
for (i=0;i<licz_kluby-1;i++) {
i_pom=i;
pom = *(wsk_team+i);
switch (decyzja) {
case 1:
for (j = i+1; j < licz_kluby;j++) {
if (porownanie_string(wsk_team,j,i)) {
i_pom = j;
pom = *(wsk_team+j);
}
}
break;
case 2:
for (j = i+1; j < licz_kluby;j++) {
if ((*(wsk_team+j)).licz_kibice < (*(wsk_team+i)).licz_kibice) {
i_pom = j;
pom = *(wsk_team+j);
}
}
break;
case 3:
for (j = i+1; j < licz_kluby;j++) {
if ((*(wsk_team+j)).budzet < (*(wsk_team+i)).budzet) {
i_pom = j;
pom = *(wsk_team+j);
}
}
break;
}
*(wsk_team+i_pom) = *(wsk_team+i);
*(wsk_team+i) = pom;
}
zobacz_rekord(wsk_team);
}
zobacz_ rekord - po prostu wyswietlenie wyniku
Wszystko wskazuje ze gdzie mam problemy z petlą (z pętlami)... Tylko nie moge znalezc tego błędu... Z góry dziękuje za pomoc.