Witam!
Pilnie potrzebuję Waszej pomocy do odnalezienia błędu, nad, którym głowie się już z kilka dobrych dni, w kodzie poniżej. Jest to lista dwukierunkowa z bazą obrazów. Mam funkcję sortowanie, polega ona na znajdowaniu najmniejszego(minimalnego) C-string’a, następnie wyświetleniu go i usunięcie go z listy i tak dalej, aż do usunięcia wszystkiech elementów listy. Błąd polega na tym, że jeżeli uruchamiam tę funkcję (powinno się nazywać wyswietl_posortowane, ale mniejsza z tym) to prawie za każdym razem przy wyświetlaniu elementów brakuje elementu, który powinien pojawić się jako ostatni, czyli ten o ‘największym’ C-string’u.
kod:
void lista::sortowanie(int jakie)
{
if(jakie==1)
{//wg tytulu, curr->tytul
char *min;
int pozycja,poz_min;
bool pokazane=false;
curr=head;//ustawiamy na poczatek
while(head) //dopoki lista nie jest calkowicie pusta
{
pozycja=1;
poz_min=1;
min=curr->tytul;
//przeszukuj liste w poszukiwaniu najmniejszeg elementu
do
{
if( strcmp(curr->tytul,min) <0 )
{ //znaleziono mniejszy
min=curr->tytul;
poz_min=pozycja; //zapisujemy jego pozycje na liscie
}
pozycja++;
} while( nastepny() );
if( !pokazane)
{
pokazane=true;
system("CLS");
cout<<" Elementy rosnaco wg tytulu :\n\t\t\t\t\t\\|/"<
}
ustaw(poz_min); //ustawiamy sie na najmniejszym
cout.width(20);
cout<
cout.width(20);
cout<
cout.width(20);
cout<
usun(poz_min); //usuwamy najmniejszy
poczatek(); //jedziemy od poczatku, szuakjac najmnijeszych elementow i wysietlajac je,potem usuwajac
}
}
elseif(jakie==2) //analogicznie do tego co wyżej
// ...
}
Cały kod : http://wklej.org/id/542551/# (funkcja ta jest w 298 wierszu kodu.)
Przykładowa baza to wczytania w .txt : http://www.text-upload.com/read.php?id=87825&c=8663754
Cały kod może się Wam wydawać dosyć nie optymalny w pewnych kwestiach, bo niedawno zacząłem programować, lecz prosiłbym najbardziej o wskazanie i/lub rozwiązanie problemu opisanego przeze mnie.
Będę niezmiernie wdzięczny za wszelką pomoc