mardi 18 avril 2017

Why does one of these sorting criterias work, but not the other?

I'm working on a part of a program that sorts posts in an array by several criteria. The posts are sorted just fine until the program gets to the last block of code.

This block of code sorts the posts as it should:

for (i = 0; i < 11; i++) 
        for (j = i + 1; j < 12; j++)
            if (serie[j].poang == serie[i].poang)
                if ((serie[j].gjorda - serie[j].inslappta) < (serie[i].gjorda - serie[i].inslappta))
                {
                    temp.poang = serie[i].poang;
                    serie[i].poang = serie[j].poang;
                    serie[j].poang = temp.poang;

                    temp.gjorda = serie[i].gjorda;
                    serie[i].gjorda = serie[j].gjorda;
                    serie[j].gjorda = temp.gjorda;

                    temp.inslappta = serie[i].inslappta;
                    serie[i].inslappta = serie[j].inslappta;
                    serie[j].inslappta = temp.inslappta;

                    strcpy(temp.namn, serie[i].namn);
                    strcpy(serie[i].namn, serie[j].namn);
                    strcpy(serie[j].namn, temp.namn);

While this one doesn't seem to affect the sorting at all (I even tried reversing the "<" sign in the last "if" statement in the code below, but it doesn't change the sorting at all, leading me to believe something is off with the whole block):

for (i = 0; i < 11; i++)
        for (j = i + 1; j < 12; j++)
            if (serie[j].poang == serie[i].poang)
                if ((serie[j].gjorda - serie[j].inslappta) < (serie[i].gjorda - serie[i].inslappta))
                    if(serie[j].gjorda < serie[i].gjorda)
                    {
                    temp.poang = serie[i].poang;
                    serie[i].poang = serie[j].poang;
                    serie[j].poang = temp.poang;

                    temp.gjorda = serie[i].gjorda;
                    serie[i].gjorda = serie[j].gjorda;
                    serie[j].gjorda = temp.gjorda;

                    temp.inslappta = serie[i].inslappta;
                    serie[i].inslappta = serie[j].inslappta;
                    serie[j].inslappta = temp.inslappta;

                    strcpy(temp.namn, serie[i].namn);
                    strcpy(serie[i].namn, serie[j].namn);
                    strcpy(serie[j].namn, temp.namn);
                    } 

Aucun commentaire:

Enregistrer un commentaire