Felmérő - függvények

Felmérő lesz nov. 5-én a függvényes fejezet rekurzió előtti részéből!

Tétel

2 pont jár hivatalból. Munkaidő: 45 perc.

1.

Mit ír ki az alábbi program? Kövessük nyomon a függvényhívásokat! – 3 x 1.5p

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

int f(int x, int &y) 
{ 
    x++; y++; 
    return x+y; 
} 

int g(int &x, int y) 
{ 
    int s1 = f(x, y); 
    int s2 = f(y, x); 
    return s1 + s2; 
} 

int main() 
{ 
    int a=10, b=20; 
    cout << f(a,b) << endl; 
    cout << a << " " << b << endl; 
    int x = 5, y = 7; 
    cout << g(x, y) << endl; 
    cout << x << " " << y << endl; 
    cout << f(x, x) << endl; 
    cout << x << endl; 
    return 0; 
}

Válasz:

    32
    10 21
    29
    6 7
    14
    7

2.

Írjunk függvényt, amely kap két pozitív egész paramétert és visszatéríti a legkisebb közös többszörösüket! – 1p

1
2
3
4
5
6
7
8
9
int masodik(int a, int b)
{
    int lkkt = a;

    while (lkkt % a != 0 || lkkt % b != 0)
        lkkt++;

    return lkkt;
}

3.

Írjunk függvényt, ami megkap egy tömböt és ennek hosszát, az egyjegyű számokat nullára állítja a tömbben, majd visszatéríti a kétjegyű páratlan elemek összegét! – 2x0.5p

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
int harmadik(int t[], int n)
{
    int osszeg = 0;

    for (int i = 0; i < n; i++) {
        if (t[i] < 10)
            t[i] = 0;
        else if (t[i] < 100 && t[i] % 2 == 1)
            osszeg += t[i];
    }

    return osszeg;
}

4.

Írjunk függvényt, mely paraméterként megkap egy természetes számot, két újabb paraméteren keresztül visszaküldi ennek legkisebb és legnagyobb számjegyét, és kiírja a képernyőre a számjegyek összegét! – 3x0.5p

 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
void negyedik(int n, int &minimum, int &maximum)
{
    minimum = 10;
    maximum = -1;
    int osszeg = 0;

    if (n == 0) {
        minimum = 0;
        maximum = 0;
    }

    while (n > 0) {
        int szj = n % 10;

        if (szj < minimum)
            minimum = szj;

        if (szj > maximum)
            maximum = szj;

        osszeg += szj;

        n = n / 10;
    }

    cout << osszeg << endl;
}