Dzięki za odpowiedź, tzn. mój problem polega na tym, że wiem jak rozwiązać zadanie, tylko w taki sposób, że przekopiuję trzy razy taki sam fragment kodu, dam dwa ify i będzie działać, natomiast podejrzewam, że jakby ktoś miał to czytać to by dostał oczopląsu :). Mam wykonać sortowanie w zależności od kryterium. Mam taką strukturę (typ_zwierza to zdefiniowany enum):
struct zwierz {
typ_zwierza typ;
char imie[N];
int wiek;
}
kryterium jako typ wyliczeniowy:
enum kryterium {wiek, imie_wiek, typ_imie_wiek};
oraz funkcję sortującą w taki sposób, że jeżeli podaję kryterium wiek to sortuje tablicę zoo[] ze względu na wiek, jeżeli imie_wiek to sortuje najpierw ze wzgledu na wiek a potem ze względu na pierwszą literę imienia i analogicznie z kolejnym kryterium. Nie chciałem trzy razy kopiować tej pętli, tylko jakoś ładniej to rozwiązać. PS. Wiem, że bubble sort nie jest optymalny, ale de facto nie jest to tutaj istotne. W tym fragmencie kodu, który podaję brakuje właśnie tego elementu zamiany "wiek" na coś innego w ifie.
void sortuj(zwierz *zoo, int n, kryterium kryt) //kryterium wiek
{
int i, j;
zwierz a, b;
for (int k = 0; k <= kryt; k++)
{
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if ((zoo + j)->wiek > (zoo + 1 + j)->wiek) //dodac zamiane pól
{
a = *(zoo + j);
*(zoo + j) = *(zoo + 1 + j);
*(zoo + 1 + j) = a;
}
}
}
}
}