headerphoto

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"); 
  
   }
 

Design downloaded from Free Templates - your source for free web templates