Sortowanie bąbelkowe

0

Witam
Mam problem z sortowaniem bąbelkowym. Program ma utworzyć dowolnie wielką tablice której rozmiar deklarujemy za pomocą suwaków, do komórek tablicy przypisuje losową wartość. Następnie program ma posortować watości i w tym momencie pojawia się probelm ponieważ podczas sortowania wyświetla się komunikat: An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll Additional information: Indeks jest spoza zakresu. Musi mieć wartość nieujemną i mniejszą niż rozmiar kolekcji. Dodam jeszcze że dodawanie losowej wartości działa prawidłowo.

Dołączam kod źródłowy programu:

#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
             {
                 int Row,Col;
                 Row=hScrollBar2->Value;
                 Col=hScrollBar1->Value;
                        dataGridView1->RowCount=Row;
                        dataGridView1->ColumnCount=Col;

                         for (int j=0; j<Row;j++)
                         for (int i=0; i<Col;i++)
                 dataGridView1->Rows[j]->Cells[i]->Value= (unsigned char)rand();

             }
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             int Row,Col;
                    Row=hScrollBar2->Value;
                     Col=hScrollBar1->Value;

             long int tablicahlp[1000],tmp;
    for(int k=0;k<Row;k++)
     for(int l=0;l<Col;l++)
     tablicahlp[k*Col+l]= Convert::ToInt16(dataGridView1[k,l]->Value);

    bool changes = true;
    while(changes)
    {
     changes = false;
     for (int j=0;j<Row*Col-1;j++)  //sortowanie
     if(tablicahlp[j+1]>tablicahlp[j])
     {
      tmp=tablicahlp[j+1];
      tablicahlp[j+1]=tablicahlp[j];
      tablicahlp[j]=tmp;
      changes = true;
     }

     }

        for(int k=0;k<Row;k++)
     for(int l=0;l<Col;l++)
     dataGridView1[k,l]->Value=tablicahlp[k*Col+l];
         }
};
} 
0

Tak jak mówi komunikat błędu odwołujesz się do miejsca w tablicy które nie istnieje, albo podczas sortowania albo podczas wstawiania do dataGridView, to zależy której linii masz błąd.

Edit: a poza tym mówisz że wielkość zależy od suwaków, a tablice deklarujesz 1000 wymiarową. A co jeżeli suwakiem ustawie 1200 ?

0

No deklarowałem ja pierwotnej wersji tak: tablicahlp[ColRow] lecz wywalało błąd tablicahlp unknow size. Więc ustawiłem suwaki od 1 do 100, a rozmiar tablicy wprowadziłem ręcznie 100100. Widzisz może gdzie jest błąd? Bo nie umiem znaleźć co jest źle, próbowałem już zmieniać wszystko.

0

Która linia dokładnie zwraca błąd ?

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