Megoldások - 2022. július

II.1.d

    beolvas n (természetes szám)
    i<-2; k<-0
    ┌amíg n≥i végezd el
    │ ┌ha n%i=0 akkor
    │ │ ┌végezd el
    │ │ │ k<-k+1
    │ │ │ n<-[n/i]
    │ │ └amíg n%i=0
    │ └■
    │ ┌ha i=2 akkor i<-i+1
    │ │ különben i<-i+2
    │ └■
    └■
    kiír k

II.2

    bármi >= 2022
    kisebb van?  NINCS, mert a végeredmény csak kisebbre

II.3

1
2
3
4
5
char *p = strtok(s, " ");
p = strtok(NULL, " ");

strcpy(id, p);
strcat(id, "2022");

Vagy kereséssel:

1
2
3
char *p = strchr(s, ' ');
strcpy(id, p+1);
strcat(id, "2022");

III.1

Lebontva:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
void secventa(int &n)
{
    int eredmeny = 0;
    int p = 1;

    while (n > 0) {
        int szj = n%10;
        if (n >= 10 && n%100 == 22) {
            szj = 0;
        }

        eredmeny += szj * p;
        p *= 10;
        n /= 10;
    }
    n = eredmeny;
}

Vagy:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
void secventa(int &n)
{
    int eredmeny = 0;
    int p = 1;

    while (n > 0) {
        if (n >= 10 && n%100 == 22) {
            eredmeny += 20 * p;
            p *= 100;
            n /= 100;
        }
        else {
            eredmeny += (n%10) * p;
            p *= 10;
            n /= 10;
        }
    }
    n = eredmeny;
}

Lebontás nélkül:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
void secventa(int &n)
{
    int p = 10;

    while (n/p >= 10) {
        if ((n/p)%100 == 22) {
            n -= 2*p;
        }
        p = p * 10;
    }
}