IF

A következőkben az úgynevezett vezérlő szerkezetekről (control structures, structuri de control) lesz szó, az első az elágazás.

Elágazás (if, „ha”)

Szerkezete (szintaxisa):

1
2
3
4
    if (feltétel...)
        utasítás1
    else
        utasítás2

Az utasítás1/2 helyén lehet:

    {
        utasítások...
        (0 vagy több)
    }

Az else rész elhagyható:

1
2
    if (feltétel...)
        utasítás(ok)

A feltétel helyére kerülhet:

Példák:

1
2
3
  x >= 3
  y > 1 && x == 2
  (y > 1) && (x == 2)

Működése:

Példa:

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

int main()
{
    int x, y;
    cout << "x=";
    cin >> x;
    cout << "y=";
    cin >> y;

    cout << "x+y = " << x+y << endl;
    cout << "x-y = " << x-y << endl;
    cout << "x*y = " << x*y << endl;

    if (y == 0) {
        cout << "nem osztunk 0-val" << endl;
    }
    else {
        cout << "x/y = " << x/y << endl;
        cout << "x%y = " << x%y << endl;
    }

    cout << "vege" << endl;

    return 0;
}

Programkód “indentálása” (indentation):

Az if-nek a then vagy else ága alá tartozó utasításokat beljebb kezdjük írni, mint magát az if-et (else-t), így a programkód elhelyezése tükrözi a szerkezetét. Ugyanígy járunk majd el más vezérlő szerkezetek esetén is.

Segítség: a Tab, Shift+Tab billenytűk, illetve Code::Blocks-ban a jobb click-es menüből „Format use AStyle”.

Feladatok:

1. Olvassunk be egy egész számot. Ha páros, írjuk ki, hogy „jo”, különben írjuk ki, hogy „nem jo”.

 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 a;

    cout << "a = ";
    cin >> a;

    if (a % 2 == 0) {
        cout << "jo" << endl;
    }
    else {
        cout << "nem jo" << endl;
    }

    return 0;
}

2. Olvassunk be két egész számot! Ha mindkettő páros, akkor írjuk ki, hogy „mindketto”, különben azt, hogy „nem”.

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

    cout << "a = ";
    cin >> a;

    cout << "b = ";
    cin >> b;

    if (a % 2 == 0 && b % 2 == 0) {
        cout << "mindketto" << endl;
    }
    else {
        cout << "nem" << endl;
    }

    return 0;
}

Egymásba ágyazott elágazások

Példa:

Adott egy szám. Ha negatív, akkor írjuk ki, hogy “nem jo”. Különben ha 5-nél kisebb, írjuk ki, hogy “keves”, ha pedig legalább 5, akkor írjuk ki, hogy “na, ez a beszed!”.

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

    if (szam < 0) {
        cout << "nem jo" << endl;
    }
    else {
        if (szam < 5) {
            cout << "keves" << endl;
        }
        else {
            cout << "na, ez a beszed!" << endl;
        }
    }

    return 0;
}

Általában inkábbb így írjuk le:

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

    if (szam < 0) {
        cout << "nem jo" << endl;
    }
    else if (szam < 5) {
        cout << "keves" << endl;
    }
    else {
        cout << "na, ez a beszed!" << endl;
    }


    return 0;
}

Feladat:

Kérjünk be egy kétjegyű természetes számot. Ha nem kétjegyűt kapunk, akkor írjuk ki, hogy “ez a felhasznalo nem tul okos”. Különben, ha osztható 10-zel, akkor írjuk ki, hogy “a 0 szamjegyeket nem szeretem”, ellenkező esetben írjuk ki a számjegyei összegét!

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

    if (szam >= 10 && szam <= 99) { // ha kétjegyű
        if (szam % 10 == 0) {
            cout << "a 0 szamjegyeket nem szeretem" << endl;
        }
        else {
            cout << (szam%10) + (szam/10) << endl;
        }
    }
    else {
        cout << "ez a felhasznalo nem tul okos" << endl;
    }

    return 0;
}

Feladat

Adott egy évszám. Írjuk ki, hogy szökőév-e!

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

    /*
        Osztható néggyel de nem osztható százzal,
        vagy osztható négyszázzal.
    */

    if ((szam % 4 == 0 && szam % 100 != 0)
        || szam % 400 == 0)
    {
        cout << "szokoev" << endl;
    }
    else {
        cout << "nem szokoev" << endl;
    }

    return 0;
}