Ismétlő feladatok - tömbök

Feladatok

5.

Adott n és egy n elemű tömb.

  1. Mennyi az elemek átlaga?
  2. Írjuk ki jobbról balra!
  3. Töröljük belőle a párosakat!
  4. Minden 1-es után szúrjunk be még egy 1-est és írjuk ki!
 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
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
using namespace std;

int main()
{

    int n;
    int t[100];

    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> t[i];
    }

    // a)
    int s = 0;
    for (int i = 0; i < n; i++) {
        s = s + t[i];
    }

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


    // b)
    for (int i =n-1; i >=0; i--)
        cout<<t[i] <<" " ;

    // c)
    int i = 0;
    while (i < n) {
        if (t[i] % 2 == 0) {
            // törölni kell t[i]-t
            for (int j = i; j <= n-2; j++) {
                t[j] = t[j+1];
            }
            n--;
        }
        else {
            i++;
        }
    }

    //d)
    for (int i = 0; i < n; i++) {
        if (t[i] == 1) {
            // i+1-re beszúrunk
            for (int j = n-1; j > i; j--) {
                t[j+1] = t[j];
            }
            n++;
            t[i+1] = 1;
            i++;
        }
    }

    for (int i = 0; i < n; i++)
        cout << t[i] << ' ';
    cout << endl;

    return 0;
}

6.

Adott n. Írjuk ki a legnagyobb és legkisebb és számot, ami a számjegyeiből építhető!

Megoldás rendezéssel:

 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
#include <iostream>

using namespace std;

int main()
{
    int n;
    int t[100];

    cin >> n;

    int i = 0;
    for (; n>0 ; i++) {
        t[i]=n%10;
        n=n/10;
    }
    // itt i a számjegyek száma lett

    for (int j=0; j<i; j++)
        for( int k=j+1; k<i; k++)
            if (t[k] > t[j]){
                int temp = t[j];
                t[j] = t[k];
                t[k] = temp;
            }

    int m = 0;
    for (int j = 0; j < i; j++) {
        m = m*10 + t[j];
    }
    cout << m << endl;

    // egyszerű kiírás a szám felépítése nélkül:
    // for (int j = 0; j < i; j++)
    //     cout << t[j];
    // cout << endl;

    return 0;
}

Megoldás frekvenciatömbbel:

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

using namespace std;

int main()
{
    int n, t[10] = {};
    cin >> n;

    while (n>0)
    {
        int i = n%10;
        t[i]++;
        n = n/10;
    }

    for (int szj = 9; szj >= 0; szj--) {
        for (int i = 1; i <= t[szj]; i++)
            cout << szj;
    }
    cout << endl;

    return 0;
}

7.

Adott tömbből állítsuk elő az összes rendezett elempárt, amiben a tagok összege osztható 5-tel.

Pl.
5
12 55 3 15 22

(12,3)  (55,15)  (3,12)  (3,22) (15,55) (22,3)
 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 t[100];
    int n;
    cin>>n;
    for (int i=0; i<n; i++)
        cin>>t[i];

    for (int i=0; i<n-1; i++)
    for (int j=i+1; j<n; j++){
        if ((t[i]+t[j])%5==0){
            cout<<t[i]<<" "<<t[j]<<endl;
            cout<<t[j]<<" "<<t[i]<<endl;
        }
    }

    return 0;
}