Pole struktur
Strukturu můžeme výhodně použít např. v různých seznamech. V téhle části si ukážeme, jak použít struktury v poli.
Chceme vytvořit seznam studentů. Pro informace o studentovi použijeme strukturu, kterou definujeme jako datový typ. Je to výhodné pro její další použití ve funkcích.
typedef struct{
char prijmeni[20], jmeno[20];
int absence;
float prumer;
}Tstudent;
Pro zapsání více studentů použijeme pole typu Tstudent. Ve funkcích pro načtení studentů od uživatele a pro výpis informací o studentech použijeme pole jako parametr funkce. Připomeňme si, že pole je vždy vstupně-výstupní parametr. Nemusíme ho proto např. ve funkci pro načtení z funkce vracet přes return - změny provedené v poli se automaticky uloží.
//funkce vloží do pole zadaný počet studentů //informace zadáváme z klávesnice //zapisuje studenty vždy od začátku pole //pokud bylo v poli něco uloženo, informace přepíše int nacteni_studentu(Tstudent trida[]) { int pocet, i; //urceni poctu studentu do{ printf("Zadej pocet knih(max. %d): ", MAX); scanf("%d", &pocet); }while(pocet>MAX || pocet<0); //nacteni informaci o studentech for(i=0; i<pocet; i++) { printf("\nZadej udaje pro %d.studenta :\n", i+1); fflush(stdin); printf("\tjmeno : "); gets(trida[i].jmeno); fflush(stdin); printf("\tprijmeni : "); gets(trida[i].prijmeni); printf("\tabsence : "); scanf("%d", &trida[i].absence); printf("\tprumer : "); scanf("%f",&trida[i].prumer); return pocet; } //vypis informaci o studentech void vypis(Tstudent trida[], int pocet) { if (pocet == 0) { printf("\nPrazdny seznam\n"); return; } printf("\nSeznam studentu :"); printf("\n\nJmeno: Prijmeni: Absence: Prumer:"); for(i=0; i<pocet; i++) { printf("\n%10s%17s%7d%10.2f",trida[i].jmeno,trida[i].prijmeni, trida[i].absence, trida[i].prumer); } printf("\n\n"); }