Jako że to jest mój pierwszy post na forum witam wszystkich.
Mam funkcję w której wczytuję 6 łańcuchów, łańcuchy przechowywane są w tablicy wskaźników do nich.
Chciałbym je posortować w kolejności alfabetycznej, tak żeby nie tracić pierwowzoru kolejności. Próbowałem to zrobić za pomocą sortowania bąbelkowego. Kod się kompiluje jednak nie uzyskuję rezultatu takiego jaki bym oczekiwał.
Szerze domyślam się że popełniłem w nim jakieś straszne błędy, może ktoś mi je wskaże? Próbowałem to sam rozgryźć ale tak się pogubiłem, że już nie mam sił do tego kodu. [glowa]
Zaznaczyłem fragment z którym jest coś nie tak:
// FUN 4
void fun4()
{
cout<<"Podaj 6 lancuchow: "<<endl;
char tablica1[100],tablica2[100],tablica3[100],tablica4[100],tablica5[100],tablica6[100];
char *tab_wsk[6]={tablica1,tablica2,tablica3,tablica4,tablica5,tablica6};
for(int i=0 ; i<6 ; i++)
{
cout<<"Podaj lancuch nr "<<i+1<<": ";
gets(tab_wsk[i]);
}
int koniec=1;
do
{
cout<<"Wybierz opcje:\n";
cout<<"1) Wyswietl pierwotną liste lancuchow\n"
<<"2) Wyswietl lancuchy w porzadku ASCII\n"
<<"3) Wyswietl lancuchy wg dlugosci\n"
<<"4) Koniec"<<endl;
cout<<"Podaj numer: ";
int numer;
cin>>numer;
cin.ignore();
switch(numer)
{
case 1:
{
for(int i=0 ; i<6 ; i++)
{
cout<<"Lancuch nr "<<i+1<<": ";
cout<<(tab_wsk[i]);
cout<<"\n";
}
}
break;
case 2:
//Kopiowanie wskaźników tablic do nowej tablicy wskaźników
{
char *tab_wsk_copy[6];
for(int i = 0; i < 6 ; i++)
{
tab_wsk_copy[i]=tab_wsk[i];
cout<<tab_wsk_copy[i]+2;
}
//Sortowanie bąbelkowe nowej tablicy wskaźników w porządku ASCII
// Gdzie jest błąd?
for(int i=1 ; i < 6 ; i++)
for(int j = 5 ; j >=i ; j --)
{
//Pętla porównująca pierwsze znaki, jeśli są takie
//same porównywane są kolejne
int k=1; //domyślam się, że tu także jest błąd, ale zgubiłem się przez miejsce // w którym przypisuję wartości
while(tab_wsk_copy[j-1][k-1]==tab_wsk_copy[j][k-1])
{
if(tab_wsk_copy[j-1][k]> tab_wsk_copy[j][k])
{
char *tab_pom;
tab_pom=tab_wsk_copy[j-1];// to miejsce mnie zastanawia
tab_wsk_copy[j-1]=tab_wsk_copy[j];
tab_wsk_copy[j-1]=tab_pom;
}
k++;
}
//Gdzie jest błąd? [koniec]
}
//Do wyświetlania wyników (umieścić w funkcji)
for(int i=0 ; i<6 ; i++)
{
cout<<"Lancuch nr "<<i+1<<": ";
cout<<(tab_wsk_copy[i]);
cout<<"\n";
}
}
break;
case 3:
{
}
break;
case 4:
{
koniec=0;
}
break;
}
}
while(koniec);
}
</cpp>