Witam mam mały problem mam posortować tablicę z imionami, nazwiskami, wagą, wzrostem, wiekiem - według wieku. Użyłem sortowania bąbelkowego, ale nie mam pojęcia jak pozamieniać wszystkie dane, bo obecnie mój kod, zamienia dane tylko wiekiem.
Więc jeśli będzie np.:
Jan Kowalski 25 lat 180cm 85kg
Adam Pachołek 15 lat 150cm 50kg
To wyświetli mi się tylko:
Jan Kowalski 15 lat 180cm 85kg
Adam Pachołek 25 lat 150cm 50kg
Jak temu zapobiec?
Kod funkcji:
void sortowanie(Osoba *os)
{
int pom = 0;
for (int i = 0; i<5; i++)
for (int j = 0; j<5 - i - 1; j++) //pętla wewnętrzna
if ((os+j)->wiek >(os+j+1)->wiek)
{
//zamiana miejscami
pom = os[j].wiek;
os[j].wiek = os[j+1].wiek;
os[j+1].wiek = pom;
}
}
Mam w funkcji stworzyć pomocnicze do imie,nazwisko,wiek,wzrost,waga czy da się jakoś pozamieniać te dane Od razu. Tzn. tak jakby przestawić po prostu miejscami w tablicy struktury "os"?
Tzn. Rozchodzi się o to, żebym nie musiał pisać takiego kodu:
void sortowanie(Osoba *os)
{
string imie, nazwisko;
int wiek=0, wzrost=0;
float waga = 0;
for (int i = 0; i<5; i++)
for (int j = 0; j<5 - i - 1; j++) //pętla wewnętrzna
if ((os+j)->wiek >(os+j+1)->wiek)
{
//zamiana miejscami
wiek = os[j].wiek;
os[j].wiek = os[j+1].wiek;
os[j+1].wiek = wiek;
wzrost = os[j].wzrost;
os[j].wzrost = os[j + 1].wzrost;
os[j + 1].wzrost = wzrost;
waga = os[j].waga;
os[j].waga = os[j + 1].waga;
os[j + 1].waga = waga;
imie = os[j].imie;
os[j].imie = os[j + 1].imie;
os[j + 1].imie = imie;
nazwisko = os[j].nazwisko;
os[j].nazwisko = os[j + 1].nazwisko;
os[j + 1].nazwisko = nazwisko;
}
}
dodanie znaczników <code>
- @furious programming