Struktury

Deklaracja struktury ma postać:
struct nazwa{
  typ1 pole1:
  typ2 pole2;
      ...
};
Na przykład:
struct pracownik{
  char nazwisko[15];
  int pensja;
};

struct pracownik p, *w, t[10];
Po tych deklaracjach utworzono tablicę 10-elementową struktur, zmienną typu struktura, i wskaźnik na zmienną tego typu.

Aby się odwołać do pola struktury stosujemy operator . lub-> (w przypadku wskaźników):

p.pensja=10;
w->pensja=20;
// lub inaczej
(*w).pensja=20;

Funkcja biblioteczna qsort

W języku C można także deklarować wskaźniki na funkcje. Przykład deklaracji:
// deklaracja wskaźnika do funkcji
int (*wsk)(int);

int fun(int arg){
  return arg*arg;
}

// przykładowo poprawne są operacje
wsk=fun;
i=wsk(10);
Funkcja qsort, wykonująca sortowanie wg algorytmu Quick Sort ma następujący nagłówek:
 void qsort(void *t,int N,int size,int(*fun)(const void*,const
void*)); 

Przykład: rekordy.cpp.

Przykładowe zadania

Przerób swój program Punkty w trójkącie (T_PINTR) wykorzystując struktury i funkcje w taki sposób, aby kod programu był bardziej czytelny, zwarty i łatwiej modyfikowalny.

Utwórz krótszą nazwę dla typu struct pracownik używając deklaracji typedef.

Posortuj elementy z przykładu rekordy.cpp w porządku malejącym względem pensji.

Posortuj elementy z przykładu rekordy.cpp w porządku malejącym względem nazwiska.

Posortuj elementy z przykładu rekordy.cpp względem obu kryteriów tzn. po pierwsze względem nazwiska i jeśli są dwie osoby o tym samym nazwisku, to wtedy względem pensji.

Przerób program w taki sposób, aby w tablicy przechowywano wskaźniki do struktury struct pracownik.

Napisz program, który sortuje słowa leksykograficznie, ale względem dowolnie ustalonej kolejności liter w alfabecie (porównaj zadanie String Compare (PP0504C).