Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

sortowanie

Ostatnio zmodyfikowano 2015-11-26 14:53
Autor Wiadomość
Anim
Temat założony przez niniejszego użytkownika
sortowanie
» 2015-11-26 11:54:12
Cześć. Potrzebuję Waszaj pomocy w sprawie poniższego kodu. Jest to program mający być odpowiedzią na zadanie dotyczące sortowania ze spoja:

http://pl.spoj.com/problems/PP0506A/

Według mojego kompilatora, według cpp.sh oraz ideone.com wszystko jest w porządku. Jednak, gdy kompiluję go na spoju, to wyrzuca mi błąd typu "SIGSEGV"... Co może być z poniższym kodem nie tak. Proszę o pomoc. I z góry dziękuję.



C/C++
#include <iostream>
#include <algorithm>

using namespace std;

struct date
{
    int p, q;
    int odleglosc;
    string a;
};

void sortowanie( date * tab, int left, int right );

int main()
{
    int t = 0;
    cin >> t;
   
    while( t-- )
    {
        int liczba_punktow = 0;
        cin >> liczba_punktow;
       
        date * tab = new date[ liczba_punktow ];
       
        for( int i = 0; i < liczba_punktow; i++ )
       
       
        {
            cin >> tab[ i ].a;
            cin >> tab[ i ].p;
            cin >> tab[ i ].q;
            tab[ i ].odleglosc =( tab[ i ].p ) *( tab[ i ].p ) +( tab[ i ].q ) *( tab[ i ].q );
        }
       
       
        sortowanie( tab, 0, liczba_punktow );
       
        for( int i = 0; i < liczba_punktow; i++ )
        {
            cout << tab[ i ].a << " " << tab[ i ].p << " " << tab[ i ].q << endl;
        }
       
        delete[] tab;
    }
   
    return 0;
}

void sortowanie( date * tab, int left, int right )
{
    int i = left;
    int j = right;
    int x = tab[( left + right ) / 2 ].odleglosc;
    do
    {
        while( tab[ i ].odleglosc < x )
             i++;
       
        while( tab[ j ].odleglosc > x )
             j--;
       
        if( i <= j )
        {
            swap( tab[ i ], tab[ j ] );
            i++;
            j--;
        }
    } while( i <= j );
   
    if( left < j ) sortowanie( tab, left, j );
   
    if( right > i ) sortowanie( tab, i, right );
   
}
P-140833
j23
» 2015-11-26 14:44:36
sortowanie( tab, 0, liczba_punktow - 1 );
P-140835
Anim
Temat założony przez niniejszego użytkownika
» 2015-11-26 14:53:10
Wielkie dzięki :) Podziałało :)
P-140836
« 1 »
  Strona 1 z 1