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:02] – [Gyakorlás] 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>
 +#include <stdio.h>
  
 +#define N 5
 +#define M 3
  
 +typedef struct {
 +    char nev[30];
 +    int jegyek[M];
 +    float atlag;
 +} Diak;
 +
 +int main() {
 +    Diak diakok[N] = {
 +        {"Anna", {4, 5, 5}},
 +        {"Bela", {3, 4, 4}},
 +        {"Csilla", {5, 5, 5}},
 +        {"David", {2, 3, 4}},
 +        {"Erika", {4, 4, 3}}
 +    };
 +
 +    for (int i = 0; i < N; i++) {
 +        int osszeg = 0;
 +        for (int j = 0; j < M; j++)
 +            osszeg += diakok[i].jegyek[j];
 +        diakok[i].atlag = (float)osszeg / M;
 +    }
 +
 +    printf("--- Diakok atlaga ---\n");
 +    for (int i = 0; i < N; i++) {
 +        printf("%s: %.2f\n", diakok[i].nev, diakok[i].atlag);
 +    }
 +
 +    return 0;
 +}
 +</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>
 +#include <stdio.h>
 +#include <math.h>
 +
 +#define N 5
 +
 +typedef struct {
 +    float x, y;
 +} Pont;
 +
 +float tav(Pont a, Pont b) {
 +    return sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y));
 +}
 +
 +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>
 +
 +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>
 +#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>
tanszek/oktatas/szamitastechnika/strukturak.1761724934.txt.gz · Last modified: 2025/10/29 08:02 by szabom