Witam robie zadanie z spoja i mam mały problem, tu jest kod ale nie zachecam do czytania go całego, bo moj problem jest zwiazany z funkcja sortowanie. Uzylem tam sortowania przez wybieranie (bo jest łattwe) i chodzi tam o to że mamy 2 tablice jedna intowa tab[1000][3] druga string tabs[1000] chodzi o to by posortowac majelaca obie wzgledem parametru tab[][2]. No i to robie ale nie wiem jaki bład. ciagle mam taka sytuacje ze jak mam np 4 punkty to 3 sa posortowane i na koncu jeden nie... nie wiem dlaczego...tzn chyba zle mam petle for, bo ona powinna byc chyba do n a nie <n ale jak zmienie to nie wiem chyba poza zakres wychodzi bo mi juz tabs nie pokazuje... dziwne rzeczy sie dzieją. Tak więc daje cąły kod ale chodzi mi o funkcje sortowanie. (prosze tlyko o wskazanie bledu, nie o kod)
Dziekuje za kazda odp.
Oto kod
#include <iostream>
#include <cmath>
using namespace std;
short t,n;
float tab[1000][3];
string tabs[1000];
void sortowanie(float tab[1000][3],string tabs[],int n)
{
int naj=tab[n-1][2];
int index=n-1;
float px,py,po;
string ps;
for(int i =0;i<+n;i++)
{
for(int j =0;j<n;j++)
{
if(tab[j][2]<naj) index=j;
}
po=tab[i][2];
tab[i][2]=tab[index][2];
tab[index][2]=po;
px=tab[i][0];
py=tab[i][1];
tab[i][0]=tab[index][0];
tab[i][1]=tab[index][1];
tab[index][0]=px;
tab[index][1]=py;
ps=tabs[i];
tabs[i]=tabs[index];
tabs[index]=ps;
}
}
int main()
{
cin>>t;
for(int j=0;j<t;j++)
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>tabs[i];
cin>>tab[i][0];
cin>>tab[i][1];
tab[i][2]=(abs(tab[i][0])*abs(tab[i][0])+abs(tab[i][1])*abs(tab[i][1]));
}
sortowanie(tab,tabs,n);
for(int i=n-1;i>=0;i--)
{
// cout<<"!!"<<endl;
cout<<tabs[i]<<" "<<tab[i][0]<<" "<<tab[i][1]<<" "<<tab[i][2]<<endl;
}
}
return 0;
}