Felmérő: adattípusok, sorozatok

Felmérő az adattípusoktól kezdődő részből (sorozatok generálásáig, ezt is beleértve) 2026. ápr. 17-én, pénteken.

Tétel

Hivatalból 2 pont jár, a munkaidő 40 perc.

A változat

1.

Írjunk programot, ami a bemenetről beolvasott A és B természetes számok esetén kiírja a ezek átlagát (1p), illetve az (A,B) koordinátájú pont origótól mért távolságát (1p).

Megoldás:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;

    cout << (double) (a+b) / 2 << endl;

    cout << sqrt(a*a + b*b) << endl;

    return 0;
}

2.

Hány byte memóriát foglal összesen egy darab int és két darab long long típusú változó? (1p) Mi annak a konstansnak a neve, ami a legnagyobb int-ben tárolható értéket adja meg? (1p)

Megoldás:

    1 x 4 B + 2 x 8 B = 20 B memória
    a konstans INT_MAX

3.

Adott n, majd egy n darab természetes számból álló sorozat (0.5p a beolvasás). Határozzuk meg a legnagyobb elemét (0.5p), a kétjegyű elemeinek darabszámát (1p) és azt, hogy milyen hosszú az a leghosszabb egymás melletti elemekből álló része, ami csak páratlan számokat tartalmaz (1p)!

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <climits>
using namespace std;

int main()
{
    int n;
    cin >> n;

    int legnagyobb = INT_MIN;
    int hany_ketjegyu = 0;

    int max_hossz = 0;
    int akt_hossz = 0;

    for (int i = 1; i <= n; i++) {
        int szam;
        cin >> szam;

        if (szam > legnagyobb) {
            legnagyobb = szam;
        }

        if (szam >= 10 && szam <= 99) {
            hany_ketjegyu++;
        }

        if (szam % 2 == 0) {
            if (akt_hossz > max_hossz)
                max_hossz = akt_hossz;

            akt_hossz = 0;
        }
        else { // páratlan
            akt_hossz++;
        }
    }

    // aktualizálunk a végén is
    if (akt_hossz > max_hossz)
        max_hossz = akt_hossz;

    cout << "legnagyobb elem: " << legnagyobb << endl;
    cout << "ketjegyuek darabszama: " << hany_ketjegyu << endl;
    cout << "legnagyobb hossz: " << max_hossz << endl;
    return 0;
}

4.

Az f(1) = 1, f(2) = 3, illetve f(n) = 2*f(n-2) + f(n-1) képletekkel megadott sorozat első hét tagja 1, 3, 5, 11, 21, 43, 85. A felhasználótól olvassunk be egy n pozitív egész számot, majd írjuk ki a sorozat első n darab tagja közül azokat, amik oszthatók 3-mal (1p).

Megoldás:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;

    int a = 1;
    int b = 3;

    for (int i = 1; i <= n; i++) {
        if (a % 3 == 0)
            cout << a << endl;

        int uj = 2*a + b;
        a = b;
        b = uj;
    }

    return 0;
}

B változat

1.

Hány byte memóriát foglal összesen két darab int és egy darab long long típusú változó? (1p) Mi annak a konstansnak a neve, ami a legkisebb int-ben tárolható értéket adja meg? (1p)

Megoldás:

    2 x 4 B + 1 x 8 B = 16 B memória
    a konstans INT_MIN

2.

Írjunk programot, ami a bemenetről beolvasott A és B természetes számok esetén kiírja a ezek átlagát (1p), illetve az (A,A) és (B,B) koordinátájú pontok egymástól mért távolságát (1p).

Megoldás:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;

    cout << (double) (a+b) / 2 << endl;

    int dx = b - a;
    int dy = b - a;
    cout << sqrt(dx*dx + dy*dy) << endl;

    return 0;
}

3.

Az f(1) = 1, f(2) = 3, illetve f(n) = f(n-1) + 2*f(n-2) képletekkel megadott sorozat első hat tagja 1, 3, 5, 11, 21, 43. A felhasználótól olvassunk be egy n pozitív egész számot, majd írjuk ki a sorozat első n darab tagja közül azokat, amik oszthatók 5-tel (1p).

Megoldás:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;

    int a = 1;
    int b = 3;

    for (int i = 1; i <= n; i++) {
        if (a % 5 == 0)
            cout << a << endl;

        int uj = b + 2*a;
        a = b;
        b = uj;
    }

    return 0;
}

4.

Adott n, majd egy n darab természetes számból álló sorozat (0.5p a beolvasás). Határozzuk meg a legkisebb elemét (0.5p), a háromjegyű elemeinek darabszámát (1p) és azt, hogy milyen hosszú az a leghosszabb egymás melletti elemekből álló része, ami csak páros számokat tartalmaz (1p)!

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <climits>
using namespace std;

int main()
{
    int n;
    cin >> n;

    int legkisebb = INT_MAX;
    int hany_haromjegyu = 0;

    int max_hossz = 0;
    int akt_hossz = 0;

    for (int i = 1; i <= n; i++) {
        int szam;
        cin >> szam;

        if (szam < legkisebb) {
            legkisebb = szam;
        }

        if (szam >= 100 && szam <= 999) {
            hany_haromjegyu++;
        }

        if (szam % 2 == 0) {
            akt_hossz++;
        }
        else { // páratlan
            if (akt_hossz > max_hossz)
                max_hossz = akt_hossz;

            akt_hossz = 0;
        }
    }

    // aktualizálunk a végén is
    if (akt_hossz > max_hossz)
        max_hossz = akt_hossz;

    cout << "legkisebb elem: " << legkisebb << endl;
    cout << "haromjegyuek darabszama: " << hany_haromjegyu << endl;
    cout << "legnagyobb hossz: " << max_hossz << endl;
    return 0;
}