Feladatok tömbökkel

1.

Adott n elemű sorozat (n < 100). Mennyi az első és utolsó páros elem között található elemek összege? (Feltéve, hogy van legalább egy páros elem 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
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream be("input.txt");

    int t[100];
    int n;

    be >> n;

    for (int i = 0; i < n; i++)
        be >> t[i];

    //for (int i = 0; i < n; i++)
    //    cout << t[i] << " ";

    int i_elso_paros = -1;
    int i_utolso_paros = -1;

    for (int i = 0; i < n; i++) {
        if (t[i] % 2 == 0) {
            i_utolso_paros = i;
            if (i_elso_paros == -1)
                i_elso_paros = i;
        }
    }

    /*for (int i = n-1; i >= 0; i++) {
        if (t[i] % 2 == 0) {
            i_elso_paros = i;
        }
    }*/

    // osszeadjuk a köztük levőket
    int osszeg = 0;
    for (int i = i_elso_paros+1; i <= i_utolso_paros-1; i++)
        osszeg = osszeg + t[i];

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

2.

Adott n elemű sorozat (n < 100). Minden elem esetén írjuk ki, hogy hány nála kisebb elem található a sorozatban.

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

int main()
{
    ifstream be("input.txt");

    int t[100];
    int n;

    be >> n;

    for (int i = 0; i < n; i++)
        be >> t[i];

    for (int i = 0; i < n; i++) {
        int db = 0;

        // hány olyan van, aki < t[i]?
        for(int j = 0; j < n; j++){
            if(t[j] < t[i])
                db++;
        }

        cout << t[i] << " elemnel kisebb: " << db << " darab" << endl;
    }

    return 0;
}

3.

Adott n elemű sorozat. Minden elem esetén írjuk ki, hogy hány nála nagyobb prímszám található a sorozatban.

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

int main()
{
    ifstream be("input.txt");
    int t[100];
    int n;

    be >> n;

    for (int i = 0; i < n; i++)
        be >> t[i];

    for (int i = 0; i < n; i++) {
        int db = 0;

        for(int j = 0; j < n; j++){
            if(t[i] < t[j])
            {
                // t[j] prímszám-e?
                int osztok=0;
                for(int f = 1; f <= t[j]; f++)
                    if (t[j] % f == 0)
                        osztok++;

                if(osztok == 2)
                    db++;
            }
        }

        cout << t[i] << " elemnel nagyobb prim: " << db << " darab" << endl;
    }

    return 0;
}

4.

Adott n elemű sorozat. Gyűjtsük össze egy tömbbe azokat az elemeket, amelyek prímek, majd írjuk ki ezeket a megjelenésük fordított sorrendjében.

Példa:

    bemenet:  7
              1 4 2 6 7 11 7

    új tömb: 2 7 11 7
    kimenet: 7 11 7 2
 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
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream be("input.txt");
    int t[100];
    int n;

    be >> n;

    for (int i = 0; i < n; i++)
        be >> t[i];

    int primek[100];
    int hany_prim = 0;

    for (int i = 0; i < n; i++) {
        // t[i] prím-e?

        int osztok=0;
        for(int f = 1; f <= t[i]; f++)
            if (t[i] % f == 0)
                osztok++;

        if(osztok == 2) {
            primek[hany_prim] = t[i];
            hany_prim++;
        }
    }

    cout << "eredeti sorrendben: ";
    for (int i = 0; i < hany_prim; i++)
        cout << primek[i] << " ";
    cout << endl;

    cout << "fordított sorrendben: ";
    for (int i = hany_prim - 1; i >= 0; i--)
        cout << primek[i] << " ";
    cout << endl;


    return 0;
}

5.

Adott n és az A1, A2, … An pontok korrdinátái (pontonként két-két valós szám). Írjuk ki annak a két pontnak a sorszámát, amelyek legközelebb vannak egymáshoz.

Példa bemenetre:

     3
     1  2
     3  4
    -2  5
 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
48
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

int main()
{
    ifstream bemenet("input.txt");

    int n;
    bemenet >> n;

    double x[1000];
    double y[1000];

    for (int i = 0; i < n; i++)
        bemenet >> x[i] >> y[i];

    double mintav = -1;
    int poz1, poz2;

    for (int i = 0; i < n; i++) {
        for (int j = i+1; j < n; j++) {
            // (x[i],y[i])   (x[j],y[j])

            double dx = x[i] - x[j];
            double dy = y[i] - y[j];

            double tav = sqrt(dx*dx + dy*dy);
            //cout << i << " es " << j << " indexu pontok kozott "
            //     << "a tavolsag: " << tav << endl;

            if (mintav == -1 || tav < mintav) {
                mintav = tav;
                poz1 = i;
                poz2 = j;
            }
        }
    }

    //cout << mintav << endl;

    cout << "a ket, egymashoz legkozelebb levo pont "
         << "(" << x[poz1] << "," << y[poz1] << "),  "
         << "(" << x[poz2] << "," << y[poz2] << ")." << endl;

    return 0;
}

6.

Írjuk ki egy tömb azon elemeit, amelyek többszörösei az utolsó elemnek!
https://www.pbinfo.ro/probleme/546/afisare0

 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 t[1000];
    
    for (int i = 0; i < n; i++)
        cin >> t[i];
    
    for (int i = 0; i < n; i++)
        if (t[i] % t[n-1] == 0)
            cout << t[i] << " ";
    
    cout << endl;
    return 0;
}

7.

Adott egy n elemű tömb. Írjuk ki a páros indexen levő elemeket az indexek növekvő sorrendjében, majd a páratlan indexen levő elemeket az indexek csökkenő sorrendjében! Az elemek 1-től sorszámozottak.
https://www.pbinfo.ro/probleme/488/afisare

8.

Adott egy n elemű tömb. Írjuk ki az elemeit a következő sorrendben: első, utolsó, második, utolsó előtti stb.
https://www.pbinfo.ro/probleme/489/afisare1

9.

Adott egy n elemű különböző értékeket tartalmazó tömb. Meg kell határozni a legkisebb és legnagyobb elem (1-től sorszámozott) indexét.
https://www.pbinfo.ro/probleme/553/pozminmax

10.

Adott egy n elemű tömb. Meg kell határozni, hogy hány olyan eleme van, amely egyenlő a legnagyobb és legkisebb érték közötti különbséggel.
https://www.pbinfo.ro/probleme/547/numarare6

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

int main()
{
    int t[1000];

    // beolvassuk az elemek számát egy változóba
    int n;
    cin >> n;

    // beolvassuk a tömb elemeit: t[0], t[1] ... t[n-2], t[n-1]
    for (int i = 0; i < n; i++)
        cin>>t[i];


    // megkeressük a legkisebb és legnagyobb értéket

    int kicsi = INT_MAX; // ennél biztos lesz kisebb
    int nagy = INT_MIN;  // ennél biztos lesz nagyobb

    // végigjárunk, ha kell, változtatjuk a kicsit vagy a nagyot
    for (int i =0 ; i < n;i++) {
        if (t[i] < kicsi)
            kicsi = t[i];
        if (t[i] > nagy)
            nagy = t[i];
    }

    // itt számoljuk meg, hogy hány megfelelő elem van
    int db = 0;

    // ez a kettőnek a különbsége
    int kulonbseg = nagy - kicsi;

    // megint végigmegyünk és ellenőrzünk mindenkit
    for (int i = 0; i < n; i++)
        if (t[i] == kulonbseg)
            db++;

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

11.

Adott egy n elemű tömb. Meg kell határozni, hogy hány olyan elempár alkotható az elemeiből, amelynek mindkét tagjában ugyanaz a tízesek számjegye.
https://www.pbinfo.ro/probleme/4380/numarareperechi1