Sorozatokkal feldolgozása

Beolvasás:

1. megadási mód:

Adott az elemek száma, majd ezt követi még annyi darab elem.

Feladat:

Adott n, majd n darab természetes szám. Írjuk ki az összegüket!

    Pl. bemenet:
            5
            10 13 5 7 9
        kimenet:
            44
 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 << osszeg << endl;

    return 0;
}

2. megadási mód:

Beolvasás valamilyen értékig (pl. álljunk meg -1-nél).

Feladat:

Ki kell számolni egy sorozat összegét, az elemek természetes számok és -1 jelzi a végét.

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

int main()
{
    int osszeg = 0;
    bool megy = true;

    while (megy) {
        int szam;
        cin >> szam;

        if (szam == -1) {
            megy = false;
        }
        else {
            osszeg += szam;
        }
    }

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

Más leírása ennek:

 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 osszeg = 0;

    while (true) {
        int szam;
        cin >> szam;

        if (szam == -1) {
            break; // leáll a ciklus
        }
        else {
            osszeg += szam;
        }
    }

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

Más megközelítés:

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

int main()
{
    int osszeg = 0;
    int szam;

    cin >> szam;
    while (szam != -1) {
        osszeg += szam;

        cin >> szam;
    }

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

Vagy:

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

int main()
{
    int osszeg = 0;

    int szam;

    while (szam != -1) {
        cin >> szam;
        if (szam != -1)
            osszeg = osszeg + szam;
    }

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

3. megadási mód

Addig olvasunk, míg el nem fogyik a bemenet.

A Ctrl-Z + Enter billentyűkombinációval lehet jelezni a parancssornak, hogy vége a bemenetnek.

A beolvasás sikerét tesztelhetjük úgy, hogy magát a beolvasást egy feltételbe rakjuk.

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

int main()
{
    int szam, osszeg = 0;

    while (cin >> szam) {
        osszeg += szam;
    }

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

Feladat:

Mindhárom megadási módra írjunk egy-egy programot, ami az elemek átlagát írja ki!

Megoldás, ha a bemenet lezárásáig olvasunk be:

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

int main()
{
    int szam, osszeg = 0, db = 0;

    while (cin >> szam) {
        osszeg += szam;
        db++;
    }

    cout << (double)osszeg / db << endl;
    return 0;
}

Feladatok:

1. https://www.pbinfo.ro/probleme/3992/count-c2
Adott n, majd n darab természetes szám. Számoljuk, meg, hogy hány kétjegyű van köztük!

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

int main()
{
    int n;
    cin>>n;
    int db=0;
    int i=1;
    while(i<=n){
        i++;
        int j;
        cin>>j;
        if(j>=10 && j<100)
            db++;
    }

    cout << db << endl;
    return 0;
}

2. https://www.pbinfo.ro/probleme/3985/suma-c2
Adott n, majd n darab természetes szám. Számoljuk ki a kétjegyűek összegét!

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

int main()
{
    int n;
    cin>>n;
    int i=1;
    int osszeg = 0;

    while(i<=n){
        i++;
        int j;
        cin>>j;
        if(j>=10 && j<100)
            osszeg = osszeg + j;
    }
    cout << osszeg << endl;
    return 0;
}

3. https://www.pbinfo.ro/probleme/56/numarareperechi
Beolvasunk egész számokat a nulla megjelenéséig. Hányszor fordul elő, hogy két egymás melletti számnak ugyanannyi az utolsó számjegye?

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

int main()
{
    int db = 0, eusz=-1;
    bool megy = true;

    while (megy)
    {
        int szam;
        cin >> szam;

        if (szam == 0)
        {
            megy = false;
        }
        else
        {

            if (szam%10==eusz)
            {
                db++;
            }

            eusz=szam%10;
        }
    }

    cout << db << endl;
    return 0;
}