User Tools

Site Tools


tanszek:oktatas:szamitastechnika:strukturak

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tanszek:oktatas:szamitastechnika:strukturak [2025/10/29 08:01] szabomtanszek:oktatas:szamitastechnika:strukturak [2025/11/18 18:26] (current) knehez
Line 76: Line 76:
 </sxh> </sxh>
  
-Mutatóval (hatékonyabb):+Mutatóval (másképpen):
 <sxh c> <sxh c>
 void kiir(const Szemely *s) { void kiir(const Szemely *s) {
Line 99: Line 99:
 </sxh> </sxh>
  
 +**Struktúra adatainak bekérése és kiírása:** 
 <sxh c> <sxh c>
 +#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);
 +}
 </sxh> </sxh>
 +
 +----
 +
 +<sxh c>
 +#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);
 +   }
 +   
 +}
 +</sxh>
 +
 ===== Gyakorlás ===== ===== Gyakorlás =====
  
Line 217: Line 288:
 </sxh> </sxh>
  
 +6. Készíts programot, ami 5 diák 3 tantárgyból kapott jegyeit tárolja és minden diáknak kiszámolja az átlagát!
 <sxh c> <sxh c>
 #include <stdio.h> #include <stdio.h>
  
-typedef struct{+#define N 5 
 +#define M 3 
 + 
 +typedef struct {
     char nev[30];     char nev[30];
-    int kor+    int jegyek[M]
-    double magassag+    float atlag
-}EMBER;+Diak;
  
-int main() +int main() { 
-+    Diak diakok[N] = { 
-    EMBER e; +        {"Anna", {4, 5, 5}}
-    int osszeg 0; +        {"Bela", {3, 4, 4}}, 
-    double atlag = 0; +        {"Csilla", {5, 5, 5}}, 
-    double max = 0; +        {"David", {2, 3, 4}}, 
-     +        {"Erika", {4, 4, 3}} 
-    for(int i = 0; i < 3; i++)+    }; 
-        printf("Adja meg az ember nevét: "); + 
-        fgets(e.nevsizeof(e.nev)stdin); +    for (int i = 0; i < N; i++) { 
-        printf("Adja meg a korát: "); +        int osszeg = 0
-        scanf("%d", &e.kor); +        for (int j = 0; j M; j++
-        printf("Magassága: "); +            osszeg +diakok[i].jegyek[j]
-        scanf("%lf", &e.magassag)+        diakok[i].atlag = (float)osszeg / M;
-        osszeg +e.kor+
-        if(max e.magassag){ +
-            max e.magassag+
-        }+
     }     }
-    atlag = (double)osszeg / 3; + 
-    printf("\n\nA korok átlaga: %lf", atlag); +    printf("--- Diakok atlaga ---\n"); 
-    printf("\nLegnagyobb magassag: %lf", max);+    for (int i = 0; i < N; i++) { 
 +        printf("%s: %.2f\n", diakok[i].nev, diakok[i].atlag)
 +    } 
 + 
 +    return 0;
 } }
 </sxh> </sxh>
  
-----+7. Definiálj egy Matrix struktúrát, amely tárol egy 3×3-as mátrixot, és készíts függvényt, ami a mátrix transzponáltját számolja ki! 
 +<sxh c> 
 +#include <stdio.h> 
 + 
 +#define SIZE 3 
 + 
 +typedef struct { 
 +    int adat[SIZE][SIZE]; 
 +} Matrix; 
 + 
 +Matrix transzponalt(Matrix m) { 
 +    Matrix t; 
 +    for (int i = 0; i < SIZE; i++) 
 +        for (int j = 0; j < SIZE; j++) 
 +            t.adat[i][j] = m.adat[j][i]; 
 +    return t; 
 +
 + 
 +void kiir(Matrix m) { 
 +    for (int i = 0; i < SIZE; i++) { 
 +        for (int j = 0; j < SIZE; j++) 
 +            printf("%d ", m.adat[i][j]); 
 +        printf("\n"); 
 +    } 
 +
 + 
 +int main() { 
 +    Matrix A = {{{1,2,3}, {4,5,6}, {7,8,9}}}; 
 +    printf("Eredeti mátrix:\n"); 
 +    kiir(A); 
 +    printf("\nTranszponált:\n"); 
 +    Matrix T = transzponalt(A); 
 +    kiir(T); 
 +    return 0; 
 +
 +</sxh>
  
 +8. Tárolj 5 darab 2D pontot egy struktúra tömbben, és határozd meg, melyik két pont van egymástól legmesszebb!
 <sxh c> <sxh c>
 #include <stdio.h> #include <stdio.h>
-#include <string.h>+#include <math.h>
  
-struct DIAK{ +#define N 5
-    int id;  +
-    char nev[50]; +
-    double atlag; +
-};+
  
-int main() +typedef struct 
-+    float xy
-   struct DIAK d1; +Pont
-   d1.id = 1; + 
-   strcpy(d1.nev"Asd Feri")+float tav(Pont aPont b{ 
-   d1.atlag = 4.8; +    return sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y));
-    +
-   //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); +
-   } +
-   +
 } }
 +
 +int main() {
 +    Pont pontok[N] = {
 +        {0, 0}, {3, 4}, {5, 1}, {2, 8}, {9, 9}
 +    };
 +
 +    float maxTav = 0;
 +    int p1 = 0, p2 = 1;
 +
 +    for (int i = 0; i < N; i++) {
 +        for (int j = i + 1; j < N; j++) {
 +            float d = tav(pontok[i], pontok[j]);
 +            if (d > maxTav) {
 +                maxTav = d;
 +                p1 = i;
 +                p2 = j;
 +            }
 +        }
 +    }
 +
 +    printf("Legnagyobb tavolsag: %.2f a (%g,%g) es (%g,%g) kozott.\n",
 +           maxTav, pontok[p1].x, pontok[p1].y, pontok[p2].x, pontok[p2].y);
 +
 +    return 0;
 +}
 +
 </sxh> </sxh>
  
-----+9. Tölts fel 4 diák adatait 4 jeggyel (mátrix formában), majd minden diákhoz írd ki a legjobb és legrosszabb jegyet! 
 +<sxh c> 
 +#include <stdio.h>
  
 +#define N 4
 +#define M 4
 +
 +typedef struct {
 +    char nev[30];
 +    int jegyek[M];
 +} Diak;
 +
 +int main() {
 +    Diak diakok[N] = {
 +        {"Anna", {5, 4, 3, 5}},
 +        {"Bela", {2, 3, 4, 4}},
 +        {"Csilla", {5, 5, 5, 4}},
 +        {"David", {3, 2, 3, 2}}
 +    };
 +
 +    for (int i = 0; i < N; i++) {
 +        int min = diakok[i].jegyek[0];
 +        int max = diakok[i].jegyek[0];
 +        for (int j = 1; j < M; j++) {
 +            if (diakok[i].jegyek[j] < min) min = diakok[i].jegyek[j];
 +            if (diakok[i].jegyek[j] > max) max = diakok[i].jegyek[j];
 +        }
 +        printf("%s: legjobb %d, legrosszabb %d\n", diakok[i].nev, max, min);
 +    }
 +
 +    return 0;
 +}
 +</sxh>
 +
 +10. Készíts programot, ami két 3×3-as mátrixot ad össze és kiírja az eredményt.
 <sxh c> <sxh c>
- //Összetett példa +#include <stdio.h> 
 + 
 +#define N 3 
 + 
 +typedef struct { 
 +    int adat[N][N]; 
 +} Matrix; 
 + 
 +int main() { 
 +    Matrix A = {{{1,2,3},{4,5,6},{7,8,9}}}; 
 +    Matrix B = {{{9,8,7},{6,5,4},{3,2,1}}}; 
 +    Matrix C; // eredmény mátrix 
 + 
 +    // Mátrixok összeadása 
 +    for (int i = 0; i < N; i++) { 
 +        for (int j = 0; j < N; j++) { 
 +            C.adat[i][j] = A.adat[i][j] + B.adat[i][j]; 
 +        } 
 +    } 
 + 
 +    // Eredmény kiírása 
 +    printf("Eredmeny:\n"); 
 +    for (int i = 0; i < N; i++) { 
 +        for (int j = 0; j < N; j++) { 
 +            printf("%d ", C.adat[i][j]); 
 +        } 
 +        printf("\n"); 
 +    } 
 + 
 +    return 0; 
 +
 </sxh> </sxh>
tanszek/oktatas/szamitastechnika/strukturak.1761724872.txt.gz · Last modified: 2025/10/29 08:01 by szabom