While - feladatok

(HF) Készítsünk felhasználói fiókot a pbinfo.ro oldalon. Itt programozás feladatok vannak, melyek megoldását ha beküldjük, a rendszer lefuttatja különböző bemenetekre és ellenőrzi, hogy jó-e a kimenetünk.

(HF) Próba-feladat: https://www.pbinfo.ro/probleme/939/sum00
Két számot kell beolvasni és az összegüket kiírni.

Feladatok pbinfo-ról:

1.

https://www.pbinfo.ro/probleme/3984/afisare-m2
Beolvassuk az a és b természetes számokat, ki kell írni az első b darab pozitív többszörösét a-nak.

 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 a, b;
    cin >> a >> b;

    int i = 1;

    while (i <= b) {

        cout << a*i << " ";

        i = i + 1;
    }

    cout << endl;
    return 0;
}

2.

https://www.pbinfo.ro/probleme/330/afisarenumerepare
Beolvasunk egy n-t, ki kell írni az első n darab nem nulla páros számot.

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

int main()
{
    int n;
    cin >> n;

    int i = 1;
    while (i <= n) {

        cout << 2 * i << " ";

        i = i + 1;
    }

    cout << endl;
    return 0;
}

Másképp:

 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 i = 1;
    while (i <= 2*n) {

        if (i % 2 == 0) {
            cout << i << " ";
        }

        i = i + 1;
    }

    cout << endl;
    return 0;
}

Még másképp:

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

int main()
{
    int n;
    cin >> n;

    int i = 2;
    while (i <= 2*n) {

        cout << i << " ";

        i = i + 2;
    }

    cout << endl;
    return 0;
}

3.

https://www.pbinfo.ro/probleme/348/afisareputeri
Adott n és p esetén ki kell írni az n szám p-nél kisebb vagy egyenlő hatványait.

 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 n, p;
    cin >> n >> p;

    int szam = 1;

    while (szam <= p) {
        cout << szam << " ";
        szam = szam * n;
    }

    cout << endl;
    return 0;
}

Ciklusok egymásban

4.

Adott n esetén írjunk ki n x n darab 0-t! Például n = 5-re a kimenet:

    0 0 0 0 0
    0 0 0 0 0
    0 0 0 0 0
    0 0 0 0 0
    0 0 0 0 0
 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;
    cin >> n;

    int sor = 1;
    while (sor <= n) {

        int i = 1;
        while (i <= n) {
            cout << 0 << " ";

            i = i + 1;
        }
        cout << endl;

        sor = sor + 1;
    }

    return 0;
}

5.

Adott n esetén írjuk ki az alábbi n x n-es táblázatot (n darab elem minden soron):

    1 1 1 ... 1
    2 2 2 ... 2
    3 3 3 ... 3
    .........
    n n n ... n

Például n = 4 esetén:

    1 1 1 1
    2 2 2 2
    3 3 3 3
    4 4 4 4
 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;
    cin >> n;

    int sor = 1;
    while (sor <= n) {

        int i = 1;
        while (i <= n) {
            cout << sor << " ";

            i = i + 1;
        }
        cout << endl;

        sor = sor + 1;
    }

    return 0;
}

6.

https://www.pbinfo.ro/probleme/351/piramida
Adott n-re ki kell írni a leírásban látható háromszöget.

 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;
    cin >> n;

    int sor = 1;
    while (sor <= n) {

        int i = 1;
        while (i <= sor) {
            cout << i << " ";

            i = i + 1;
        }
        cout << endl;

        sor = sor + 1;
    }

    return 0;
}

Összegek, szorzatok kiszámítása

Példa összeg kiszámítására: adott n-re meghatározzuk az első n darab pozitív egész szám ö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 osszeg = 0;

    int i = 1;
    while (i <= n) {
        osszeg = osszeg + i;
        i = i + 1;
    }

    cout << osszeg << endl;
    cout << n * (n+1) / 2 << endl; // ugyanaz az érték másképp kiszámolva
    return 0;
}

Más példa:

    S = 2 + 4 + 6 + ... + (2*n)
 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;

    int i = 2;
    while (i <= 2*n) {
        osszeg = osszeg + i;
        i += 2;
    }

    cout << osszeg << endl;
    cout << (2*n + 2) * n / 2 << endl;

    return 0;
}

7.

Adott n ≥ 3 esetén írjuk ki az 1*2*3 + 2*3*4 + ... + (n-2)*(n-1)*n összeg értékét! Ha n < 3, akkor írjunk ki egy hibaüzenetet!

 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;

    int i = 1;
    while (i <= n-2) {

        osszeg = osszeg + i*(i+1)*(i+2);

        i++;
    }

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

8.

Adott n esetén számítsuk ki az első n darab teljes köb összegét! Például n = 3-ra a kimenet 36 (mert 13 + 23 + 33 = 36).

9.

Számítsuk ki az n-nél kisebb négyzetszámok öszegét! Például: n = 20 esetén a válasz legyen 30 (0 + 1 + 4 + 9 + 16).

10.

Számítsuk ki adott n pozitív egész faktoriálisát (n! = 1 * 2 * ... * n). Például n = 5 esetén a válasz legyen 120 (1*2*3*4*5).

11.

Adott n esetén számítsuk ki az első n darab pozitív egész faktoriálisának összegét! Például n = 4 esetén a válasz legyen 33 (1+2+6+24).