sortowanie tabeli

0

Hej;
Pisze program ktory posortuje tabelke sportowa wg ilosci punktow. Wszystko mi dzialalo ok, dopoki nie dodalem malych pktow, ktore wazyly by w przypadku gdy dwa zespoly maja te sama ilosc punktow.
Ponizej program:


#include <iostream>

using namespace std;

void sortowanie(int tab[8][4], int n)

{

    int i,j,k,l,w,u,x,y;

    for(int i=1; i<n; i++)
    {
        for(int j=n-1; j>=1; j--)
        {
            if((tab[j][1]<tab[j-1][1])||((tab[j][1]=tab[j-1][1])&&(tab[j][2]>tab[j-1][2])))
            {
            w=tab[j-1][0];
            u=tab[j-1][1];
            x=tab[j-1][2];
            y=tab[j-1][3];

            tab[j-1][0]=tab[j][0];
            tab[j-1][1]=tab[j][1];
            tab[j-1][2]=tab[j][2];
            tab[j-1][3]=tab[j][3];

            tab[j][0]=w;
            tab[j][1]=u;
            tab[j][2]=x;
            tab[j][3]=y;

            }
        }
    }
}

void kolejnosc(int tab [8][4])

{

   cout<< " Lp." << "|" << " Druzyna     " << endl;
   cout<<"----------------------------------"<< endl;

       for (int k=0;k<8;k++)

       {
                cout << tab[k][0]<< "   |    " <<  tab[k][1]<< "   |    " <<  tab[k][2]<< "   |    " <<  tab[k][3]<< endl;
       }

}

int main()

{

   int  ile=8;

    int tablica [8][4];

    tablica[0][0]=1; //nazwa
    tablica[0][1]=9; // pkt
    tablica[0][2]=11; //mpkt

    tablica[1][0]=2; //nazwa
    tablica[1][1]=7; // pkt
    tablica[1][2]=12; //mpkt

    tablica[2][0]=3; //nazwa
    tablica[2][1]=9; // pkt
    tablica[2][2]=13; //mpkt

    tablica[3][0]=4; //nazwa
    tablica[3][1]=32; // pkt
    tablica[3][2]=14; //mpkt

    tablica[4][0]=5; //nazwa
    tablica[4][1]=13; // pkt
    tablica[4][2]=15; //mpkt

    tablica[5][0]=6; //nazwa
    tablica[5][1]=33; // pkt
    tablica[5][2]=16; //roznica
    tablica[5][3]=26; //suma

    tablica[6][0]=7; //nazwa
    tablica[6][1]=23; // pkt
    tablica[6][2]=17; //mpkt

    tablica[7][0]=8; //nazwa
    tablica[7][1]=9; // pkt
    tablica[7][2]=18; //mpkt

   cout<< " Lp." << "|" << " Druzyna     " << endl;
   cout<<"----------------------------------"<< endl;

       for (int k=0;k<8;k++)

       {
                cout << tablica[k][0]<< "   |    " <<  tablica[k][1]<< "   |    " <<  tablica[k][2]<< "   |    " <<  tablica[k][3]<< endl;
       }

  sortowanie (tablica , ile);
  kolejnosc(tablica);

  delete [] tablica;

    return 0;
}

Nie wiem dlaczego gubią mi się duze punkty - kilka zespołow ma zle skopiowane wartosci.
Dzieki za pomoc

1

Zamiast:

((tab[j][1]=tab[j-1][1])&&(tab[j][2]>tab[j-1][2]))

spróbuj: ((tab[j][1]==tab[j-1][1])&&(tab[j][2]>tab[j-1][2]))

0

No swietnie, siedzialem nad tym ponad godzine:) i nie znalazlem takiego farfoncla:) jednak czasem potrzebne jest spojrzenie na problem z innej perspektywy:)
@szweszwe dzieki:)

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