Felmérő - struktúrák

Struktúrákból felmérő pénteken, 2025. ápr. 4-én. Anyag:

Tétel

2 pont jár hivatalból, 3 pont a diákadatbázisnál beadott forráskódra. Nem kell teljes programokat írni, csak a kért kódrészletet mindenhol.

1. feladat:

Készítsünk struktúrát User néven egy felhasználó adatainak tárolására a következő mezőkkel, majd jelentsünk be egy 100 felhasználó tárolására alkalmas tömböt! (0.5 pont)

  1. Írjunk le egy utasítást, mely az utolsó felhasználó bónuszpontjainak számát megduplázza! (0.5 pont)
  2. Számítsuk ki a 100 darab felhasználó átlagos rating-jét! (0.5 pont)
  3. Rendezzük a felhasználókat rating szerinti csökkenő sorrendbe (egyenlőség esetén név szerint abc-rendbe) és írjuk ki az új sorrendben csak a felhasználóneveket! (0.5 pont)

Megoldás

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
struct User
{
    char username[31];
    char password[31];
    double rating;
    int bonus;
} t[100];

// a)
t[99].bonus *= 2;

// b)
double s = 0;
for (int i = 0; i < 100; i++)
    s += t[i].rating;
double atlag = s / 100;

// c)
for (int i = 0; i < 100; i++)
    for (int j = i+1; j < 100; j++)
        if (t[i].rating < t[j].rating
            || (t[i].rating == t[j].rating && strcmp(t[i].username, t[j].username) > 0))
        {
            User temp = t[i];
            t[i] = t[j];
            t[j] = temp;
        }

2. feladat:

Adott egy üres verem és az ezen elvégzett PUSH(2); PUSH(7); PUSH(9); PUSH(8); POP; PUSH(6); POP; POP; PUSH(4); PUSH(5) műveletsor. Írjuk ki a verem tartalmát egy-egy lépés elvégzése után! (0.5 pont)

Megoldás

    2
    2 7
    2 7 9
    2 7 9 8
    2 7 9
    2 7 9 6
    2 7 9
    2 7
    2 7 4
    2 7 4 5

3. feladat:

Adott egy üres sor és az előző feladatban leírt műveletek. Íjuk le a sor tartalmának alakulását egy-egy lépés elvégzése után! (0.5 pont)

Megoldás

    2
    2 7
    2 7 9
    2 7 9 8
    7 9 8
    7 9 8 6
    9 8 6
    8 6
    8 6 4
    8 6 4 5

4. feladat:

Definiáljunk egy struktúrát komplex számok tárolására és írjunk egy függvényt, ami két komplex szám szorzatát számítja ki! (1 pont)

Megoldás

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
struct Komplex
{
    double re;
    double im;
};

Komplex szorzat(Komplex a, Komplex b)
{
    Komplex eredmeny;
    eredmeny.re = a.re * b.re - a.im * b.im;
    eredmeny.im = a.re * b.im + b.re * a.im;
    return eredmeny;
}

5. feladat:

Adott a következő deklaráció:

1
2
3
4
5
6
7
    struct A {
        double x;
        struct B {
            int x;
            int y;
        } y;
    } x;

A következő kifejezések mindegyikéről döntsük el, hogy helyesek-e (ha nem, írjuk le, hogy miért nem)! (4 x 0.25p)

    x.x.y, x.y.x, x.B.y, x.A.x

Megoldás

x.x.y - nem helyes, mert x-nek az x adattagja double típusú, nem struktúra

x.y.x - helyes

x.B.y, x.A.x - nem helyesek mert A és B a struktúrák nevei, nem adattagok