For

A for ciklus

Más néven: meghatározott lépésszámú ismétlő szerkezet

Szerkezete:

    for (kezdőérték; feltétel; léptetés)
        utasítás

vagy:

1
2
3
4
5
    for (kezdőérték; feltétel; léptetés) {
        utasítás1
        utasítás2
        ...
    }

Működése:

Pontosan ugyanazt csinálja, mint:

    {
        kezdőérték;
        while (feltétel) {
            utasítás(ok)
            léptetés
        }
    }

A kezdőérték, feltétel és léptetés helyén tetszőleges kifejezések lehetnek (“kezdőérték” esetén új változót is be lehet vezetni).

Példák

Kiírjuk a számokat 1-től 10-ig:

    for (int i = 1; i <= 10; i++)
        cout << i << endl;

Ugyanez while-lal így nézett volna ki:

    int i = 1;
    while (i <= 10) {
        cout << i << endl;
        i++;
    }

Kiírjuk a számokat n-től 1-ig:

    int n;
    cin >> n;
    
    for (int i = n; i >= 1; i--)
        cout << i << endl;

Számoljunk el 3-tól 100-ig hármasával!

1
2
    for (int i = 3; i <= 100; i=i+3)
        cout << i << endl;

Vagy:

1
2
    for (int i = 3; i <= 100; i += 3)
        cout << i << endl;

Feladatok

1. Adott n, írjuk ki az n-t n x n-szer.

    Pl. n = 3-ra:
        3 3 3
        3 3 3
        3 3 3

    Pl. n = 5-re:
        5 5 5 5 5
        5 5 5 5 5
        5 5 5 5 5
        5 5 5 5 5
        5 5 5 5 5
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;

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

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cout << n << " ";
        }
        cout << endl;
    }

    return 0;
}

HF!

Írjuk át az előbbi megoldást úgy, hogy while ciklusokat használjon!

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

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

    int i = 1;
    while (i <= n) {
        int j = 1;
        while (j <= n) {
            cout << n << " ";
            j++;
        }
        cout << endl;

        i++;
    }

    return 0;
}

2. Adott n, írjuk ki az alábbi n x n-es táblázatot.

    1 2 ... n
    1 2 ... n
    ...
    1 2 ... n   (n sor összesen)
    Pl. n = 3-ra:
        1 2 3
        1 2 3
        1 2 3

    Pl. n = 5-re:
        1 2 3 4 5
        1 2 3 4 5
        1 2 3 4 5
        1 2 3 4 5
        1 2 3 4 5
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;

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

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cout << j << " ";
        }
        cout << endl;
    }

    return 0;
}

3. Adott n, írjuk ki az alábbi n x n-es táblázatot.

    1 1 ... 1   (n darab)
    2 2 ... 2
    ...
    n n ... n 
    Pl. n = 3-ra:
        1 1 1
        2 2 2
        3 3 3

    Pl. n = 5-re:
        1 1 1 1 1
        2 2 2 2 2
        3 3 3 3 3
        4 4 4 4 4 
        5 5 5 5 5
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;

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

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cout << i << " ";
        }
        cout << endl;
    }

    return 0;
}

HF

Kövessük nyomon az előbbi programot az n = 3 bemenetre!

4. Adott n, írjuk ki az alábbi n x n-es táblázatot.

    1
    1 2
    1 2 3
    1 2 3 4
    1 2 3 4 5
    ...
    1 2 3 ..... n
    Pl. n = 3-ra:
        1
        1 2 
        1 2 3

    Pl. n = 5-re:
        1 
        1 2
        1 2 3
        1 2 3 4
        1 2 3 4 5
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;

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

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= i; j++) {
            cout << j << " ";
        }
        cout << endl;
    }

    return 0;
}

HF

Kövessük nyomon az előző programot az n = 4 bemenetre!

5. Adott n, írjuk ki az alábbi táblázatot:

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

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

    for (int i = n; i >= 1; i--) {
        for (int j = 1; j <= i; j++) {
            cout << j << " ";
        }
        cout << endl;
    }

    return 0;
}

6. (+pontért) Állítsuk elő for-ciklusokkal az alábbi kimenetet!

    1 2 3 4 5 4 3 2 1
    1 2 3 4   4 3 2 1
    1 2 3       3 2 1
    1 2           2 1
    1               1

7. (+pontért) Állítsuk elő for-ciklusokkal az alábbi kimenetet!

               333
             33
            3
          5 5
          5 5
          5 5
      1 1 1 1 1 1 1 1 1 1 1
    2 2 2 2 2 2 2 2 2 2 2 2 2
    2 2 2 2 2 2 2 2 2 2 2 2 2
      1 1 1 1 1 1 1 1 1 1 1
          8 8       8 8