Sorozatok feldolgozása

Sorozat: valahány szám egymás mellett

Általában meg lesz adva az is, hogy hány elemű.

    Pl.
      5
      10 20 30 40 50

Hogy tudjuk beolvasni?

Pl. számítsuk ki az elemek összegét egy sorozatban (adott az elemek száma, majd az elemek).

 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
#include <iostream>
using namespace std;

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

    int osszeg = 0;

    // n-szer:
    //      beolvasunk és hozzáadjuk az összeghez

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

        //cout << "bejott " << szam << endl;

        osszeg = osszeg + szam;
        
        /*cout << "az osszeg most: " << osszeg << endl;
        cout << "-----------" << endl;*/
    }


    cout << osszeg << endl;
    return 0;
}

HF (hasonlóan): Adott sorozatnak számoljuk ki a szorzatát.

Minimum és maximumkeresés

Adott n, majd egy n elemű sorozat, az elemek legfeljebb háromjegyű természetes számok.

Keressük a sorozat legnagyobb elemét! (maximumkeresés)

    Pl.
        5
        1 8 2 9 1

Ötlet:

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

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

    int maximum = -1;

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

        if (szam > maximum)
            maximum = szam;
    }

    cout << maximum << endl;
    return 0;
}

HF. keressük meg a legkisebb értéket!

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

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

    int minimum = 1000;

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

        if (szam < minimum)
            minimum = szam;
    }

    cout << minimum << endl;
    return 0;
}

Feladatok

1. Adott sorozatban számítsuk ki az elemek átlagát!

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

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

    int osszeg = 0;

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

        osszeg = osszeg + szam;
    }

    cout << (double) osszeg / n << endl;

    return 0;
}

2. Adott sorozat esetén írjuk ki, hogy hányszor fordult elő az, hogy két egymás melletti elem azonos?

 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
#include <iostream>
using namespace std;

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

    int elozo;
    cin >> elozo;

    int megoldas = 0;

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

        if (szam == elozo)
            megoldas++;

        elozo = szam;
    }

    cout << megoldas << endl;

    return 0;
}

3. Adott sorozat esetén írjuk ki, hogy legtöbb hány egymás melletti 0 érték van benne.

 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
#include <iostream>
using namespace std;

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

    int max_db = 0;
    int db = 0;

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

        if (szam == 0)
            db++;
        else {
            if (db > max_db)
                max_db = db;

            db = 0;
        }
    }

    if (db > max_db)
        max_db = db;
    cout << max_db << endl;

    return 0;
}

HF:

Adott sorozat esetén írjuk ki minden azonos elemekből álló részre ennek hosszát és a benne levő elem értékét! (Szokás ezt run-length encoding-nak hívni.)

Példa:

    bemenet: 12
             1 1 2 3 3 3 4 4 5 5 1 1 
    kimenet:
            2 db 1
            1 db 2
            3 db 3
            2 db 4
            2 db 5
            2 db 1
 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
#include <iostream>
using namespace std;

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

    int elozo;
    cin >> elozo;
    int db = 1;

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

        if (szam == elozo)
            db++;
        else {
            cout << db << " darab " << elozo << endl;
            db = 1;
        }

        elozo = szam;
    }

    cout << db << " darab " << elozo << endl;

    return 0;
}