Načítavanie vstupu

Doteraz všetky programy boli relatívne nanič, pretože pri každom spustení vypisovali to isté. Namiesto programov typu "vypíš prvých 10 nepárnych čísel" by sme radi mali "načítaj číslo $n$ a vypíš prvých $n$ nepárnych čísel".

Takže potrebujeme vedieť načítavať vstup.

Na načítavanie sa dá použiť funkcia scanf(), ktorá sa syntaxou veľmi podobá printf(). Prvý parameter je opäť formátovací reťazec, ale ďalšie už nie sú výrazy, ale smerníky na premenné. Teda ak chceme načítať jedno číslo do premennej a, napíšeme scanf("%d", &a);

Prečo tam je &a miesto a? Dôvod je veľmi jednoduchý, a je výraz, ktorého hodnota je hodnota a, napríklad číslo 7. A zavolaním scanf("%d", 7); ťažko budeme vedieť, kam máme uložiť načítanú hodnotu. (Vieme ukladať len do premenných, nie do hodnôt). Keď však napíšeme &a, tak výsledkom výrazu nebude hodnota a, ale miesto, kde je a uložené v pamäti počítača. Funkcia teda načíta číslo a uloží ho na to miesto v pamäti, kde bola predtým hodnota a.

Vyskúšajte si skompilovať a spustiť tento program:

#include <cstdio>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", a+b);
}

Po spustení program čaká, kým mu napíšete dve čísla napr. 105 21. Po zadaní čísel musíte stlačiť enter, inak sa k programu nedostanú.

Pokiaľ sa vám scanf nepáči, dajú sa použiť streamy.

#include <iostream>

using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
}

Časom sa naučíme načítavať aj iné veci ako čísla.