Witam serdecznie.
Używam programy C++ Builder 6 i mam pewien problem z zadaniem... A mianowicie z sortowaniem przez wstawianie.
Po wygenerowaniu liczb w StringGrid1 jest problem z posortowaniem tego w StringGrid2
Po prostu tak jakby algorytm nie działał...
To jest kod do sortowania przez wstawianie :
Form1->StringGrid2->Show(); // pojawiamy 2 stringgida
Form1->StringGrid2->Cells[0][0] = Form1->StringGrid1->Cells[0][0]; // przeniesienie 1wszej liczby do 2 stringgrida
int index = 0; // index na 0 ustawiamy
for(int i = 0; i < 10; i++) // petla jakas przechodzaca przez wszystkie liczby
{
index = 0; // co przejscie index ma byc 0
for(int j = 0; j < 9 ; j++) // petla do 9 bo sprawdzamy 2 kolo siebie na raz
{
if(Form1->StringGrid2->Cells[j][0] != "" && Form1->StringGrid1->Cells[i][0].ToInt() < Form1->StringGrid2->Cells[j][0].ToInt()) // jesli
{
if(index - 1 == -1)
{
Form1->StringGrid2->Cells[index+1][0] = Form1->StringGrid2->Cells[index][0];
}
}
}
Form1->StringGrid2->Cells[index][0] = Form1->StringGrid1->Cells[i][0];
}
}
Jakby ktoś był tak uprzejmy i naprawił tak żeby działało byłbym wdzięczny :)
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
for(int i = 1; i < 10; i++){
for(int j = 0; j < 9 ; j++){
if(Form1->StringGrid2->Cells[j][0] != "" && Form1->StringGrid1->Cells[i][0].ToInt() < Form1->StringGrid2->Cells[j][0].ToInt()){
for(int k=9; k>j; k--){
Form1->StringGrid2->Cells[k][0] = Form1->StringGrid2->Cells[k-1][0];
}
Form1->StringGrid2->Cells[j][0] = Form1->StringGrid2->Cells[i][0];
j=9;
}
}
}
Sprawdź, czy działa, bo nie mam możliwości przetestowania. Usunąłem kilka niepotrzebnych rzeczy.
1. Sortujemy stringa, czy liczbę?
2. "Pojawiamy"?
3. //pętla do 9, a nie 10, bo tablica jest numerowana od 0, a nie 1, dlatego 9 element, to tak naprawdę 10 element
4. Czym jest Form, StringGrid,Cells? Jakieś klasy? Rozumiem, że musi to być w takiej formie sortowane i nie może być zwykłej tablicy?
Nie widzę tu w ogóle przesuwania elementów, np. chcesz wstawić 3 w ciąg:
1,2,5,6