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];
}
};
}