User Tools

Site Tools


tanszek:oktatas:szamitastechnika:strukturak

This is an old revision of the document!


Struktúrák

Mi az a struktúra?

A struktúra (structure) egy felhasználó által definiált adattípus, amely különböző típusú változókat (adatokat) képes egy név alatt összefogni. Ez hasonló az osztályhoz más nyelvekben, csak egyszerűbb, mert nincs benne metódus.

Célja: összetett adatok (pl. hallgató, autó, pont, dátum stb.) logikai egységbe foglalása.

Struktúra definiálása

A struktúra típust a struct kulcsszóval hozzuk létre:

struct Szemely {
    char nev[50];
    int eletkor;
    float magassag;
};

Ezután létrehozhatunk belőle változókat:

struct Szemely ember1, ember2;

VAGY egyből definiálhatjuk és példányosíthatjuk:

struct Szemely {
    char nev[50];
    int eletkor;
    float magassag;
} ember1, ember2;

Típusnév (typedef)

A typedef segítségével egyszerűbb nevet adhatunk a struktúrának:

typedef struct {
    char nev[50];
    int eletkor;
    float magassag;
} Szemely;

Szemely ember1, ember2;
//Így már nem kell mindenhol struct kulcsszót írni.

Struktúratagok elérése

A tagokat a pont (.) operátorral érjük el:

strcpy(ember1.nev, "Kovacs Bela");
ember1.eletkor = 25;
ember1.magassag = 1.82;

Ha mutatóval dolgozunk, akkor a nyíl (→) operátort használjuk:

Szemely *ptr = &ember1;
printf("%s %d %.2f", ptr->nev, ptr->eletkor, ptr->magassag);





Gyakorlás

#include <stdio.h>

typedef struct{
    char nev[30];
    int kor;
    double magassag;
}EMBER;

int main()
{
    EMBER e;
    int osszeg = 0;
    double atlag = 0;
    double max = 0;
    
    for(int i = 0; i < 3; i++){
        printf("Adja meg az ember nevét: ");
        fgets(e.nev, sizeof(e.nev), stdin);
        printf("Adja meg a korát: ");
        scanf("%d", &e.kor);
        printf("Magassága: ");
        scanf("%lf", &e.magassag);
        osszeg += e.kor;
        if(max < e.magassag){
            max = e.magassag;
        }
    }
    atlag = (double)osszeg / 3;
    printf("\n\nA korok átlaga: %lf", atlag);
    printf("\nLegnagyobb magassag: %lf", max);
}


#include <stdio.h>
#include <string.h>

struct DIAK{
    int id; 
    char nev[50];
    double atlag;
};

int main()
{
   struct DIAK d1;
   d1.id = 1;
   strcpy(d1.nev, "Asd Feri");
   d1.atlag = 4.8;
   
   //d1 = {0,"sdg asg", 5.0};
   
   struct DIAK diakok[2] = {
       {2, "Jkl Éva", 4.4}, 
       {3, "Qwerty Béla", 3.6}
   };
   
   printf("ID: %d\n", d1.id);
   printf("Név: %s\n", d1.nev);
   printf("Átlag: %lf\n\n", d1.atlag);
   
   for(int i = 0; i < 2; i++){
        printf("ID: %d\n", diakok[i].id);
        printf("Név: %s\n", diakok[i].nev);
        printf("Átlag: %lf\n", diakok[i].atlag);
   }
   
}


 //Összetett példa 

tanszek/oktatas/szamitastechnika/strukturak.1761724670.txt.gz · Last modified: 2025/10/29 07:57 by szabom