Po uruchomieniu funkcji sortującej cały program przestaje działać

0
void quick_ros(int* x, int lewy, int prawy)
{
    int srodek, piwot, granica;
    srodek=(int)((lewy+prawy)/2);
    piwot=x[srodek];
    x[srodek]=x[prawy];
    granica=lewy;
    for(int i=lewy; i<prawy; i++)
    {
        if(x[i]<piwot)
        {
            swap(x[granica], x[i]);
            granica++;
        }
        x[prawy]=x[granica];
        x[granica]=piwot;
        if(lewy<granica-1)
            quick_ros(x, lewy, granica-1);
        if(granica+1<prawy)
            quick_ros(x, granica+1, prawy);
    }

}

Czy ktoś jest w stanie mi powiedzieć dlaczego po uruchomieniu tej funkcji cały program przestaje działać?

0
int main()
{
    int* x;
    int rozmiar, c, lewy=0, prawy=rozmiar-1;
    cout<<"Podaj rozmiar tablicy"<<endl;
    cin>>rozmiar;
    x= tab(rozmiar);
    do
    {
        cout<<"1. Generacja tablicy"<<endl;
        cout<<"2. Wyswietlenie tablicy"<<endl;
        cout<<"3. Quicksort rosnaco"<<endl;
        cout<<"4. Quicksort malejaco"<<endl;
        cout<<"5. Zakoncz dzialanie programu"<<endl;
        cin>>c;
        switch(c)
        {
            case 1: generacja_tab(x, rozmiar); break;
            case 2: wyswietl_tab(x, rozmiar); break;
            case 3: quick_ros(x, lewy, prawy); break;
        }
    }while(c!=5);
    delete []x;
    return 0;
}
1

Zobacz sobie ile wynosi wartość srodek i zastanów się dlaczego.

0

Nadawałem wartość zmiennej prawy zanim nadałem wartość rozmiar. Naprawiłem ale funkcja quick_ros dalej nie działa jak powinna.

Bez tytułu.png

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