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:03] 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 288: 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.1761724983.txt.gz · Last modified: 2025/10/29 08:03 by szabom