Cześć
SPOJ nie przyjmuje kodu twierdząc, że odpowiedź jest błędna
#include <iostream>
#include <math.h>
using namespace std;
void f(double w[],int x[],int y[],string nazwa[], int n)
{
for(int i=0; i<n; i++)
for(int j=1; j<n-i; j++) //pętla wewnętrzna
if(w[j-1]>w[j])
{
swap(nazwa[j-1],nazwa[j]);
swap(x[j-1],x[j]);
swap(y[j-1],y[j]);
}
//zamiana miejscami
//swap(tab[j-1], tab[j]);
}
int main()
{
int t;
int n;
cin >> t;
for(int i = 0; i < t; i ++)
{
cin >> n;
int* x = new int[n];
int* y = new int[n];
string* nazwa = new string[n];
double* w = new double[n];//wynik
for(int j = 0; j < n; j ++)
{
cin >> nazwa[j] >> x[j] >> y[j];
w[j] = sqrt(x[j]*x[j]+y[j]*y[j]);
}
f(w,x,y,nazwa,n);
for(int j = 0; j < n; j++)
{
cout << nazwa[j] << x[j] << y[j] << endl;
}
cout << endl;
delete []x;
delete []y;
delete []nazwa;
delete []w;
}
return 0;
}
Pomysł mój polegał na tym, żeby wraz z sortowaniem wyniku sqrt(x,y), sortować tak samo nazwę, x i y, dzięki czemu wszystkie te zmienne, które zostały wprwadzone w tym samym czasie były na tych samych indeksach przy wyświetlaniu.
Próbowałem coś kombinować z wyświetlaniem tekstu tj. dodwać endl; lub spację między kolejnymi zmiennymi ale SPOJ nadal nie zalicza.Przejrzałem także bliźniacze wątki, ale nie znalazłem odpowiedzi
Proszę o pomoc.