přejít na obsah přejít na navigaci

Linux E X P R E S, Programovanie v jazyku C++: Stream cin

Programovanie v jazyku C++: Stream cin

cplusplus.png

V minulom diele sme rozoberali stream cout na výstup z programu. V tomto článku rozoberieme vstup, ktorý reprezentuje stream cin. Takto by sme ukončili nutný základ, pre ďalšie pokračovanie seriálu.


Stream cin

Tak, ako stream cout, tak i cin je objekt. Jeho použitie je:

int hmotnost;
cin >> hmotnost;

Pre stream cin sa využíva operátor >>. Tento operátor získava znaky zo vstupného prúdu. Za týmto operátorom dáte meno premennej, na ktorú sa bude vzťahovať hodnota, ktorú zadáte na klávesnici.

Stream cin zaznamenáva vstup od užívateľa do programu. Podobne ako cout, aj cin je inteligentný objekt, narozdiel od funkcie scanf() z jazyka C. Stream cin automaticky konvertuje vstup z klávesnice do tvaru zadeklarovanej premennej. V prípade našom, ak premenná hmotnosť je typu int, tak aj hodnota, ktorú zadáte, sa automaticky pretypuje na int.

Najlepšie si to ukázať na príklade.

Príklad 1: Použitie stream cin a preopakovanie stream cout

#include <iostream>
using namespace std;
int main()
{
    cout << "Zdraví ťa program HAL 9000, superinteligetná umelá bytosť\n";
    cout << "Začnime s menším programom výučby z jazyka C++: stream cout a cin\n";
    cout << "Chcem, aby sa s teba stal špecialista na jazyk C++ a raz naprogramoval 
v tomto jazyku moje dvojča ;)\n";
    cout << "\n";
    cout << "Ako sa voláš a aký je tvoj vek?\n";
    string meno;
    int vek;
    cout << "\n";
    cout << "Zadaj tvoje meno: ";
    cin >> meno;
    cout << "\n";
    cout << "Zadaj tvoj vek: ";
    cin >> vek;
    cout << "\n";
    cout << "Aaaa, tak ty sa voláš "<<meno<<"a tvoj vek je "<<vek<<"\n";
    cout << "Co povieš na to "<<meno<<"si ukázať par fintičiek, ktoré ťa čakajú 
v budúcich častiach seriálu o jazyku C++?\n";
    cout << "\n";
    cout << "Ak súhlasíš, odpovedz ano, ak nesúhlasíš, odpovedz nie: ";
    string odpoved;
    cin >> odpoved;
    cout << "\n";
    if (odpoved == " nie" )
    {
        cout << "Sklamal si. S tvojim prístupom to nikam nedotiahneš!";
        return 0;
    }
    if (odpoved == "ano")
    {
        cout << "Fajn, potešil si ma. Poďme sa pohrať s racionálnymi číslami\n";
        cout << "\n";
        cout << "Zadaj racionálne ľubovolne číslo: ";
        double vCislo;
        cin >> vCislo;
        cout << "Ak vynásobíme tvoje zadane číslo "<<vCislo<<" samou sebou, dostaneme: 
"<<vCislo*vCislo<<"\n";
        cout << "Fajn, viem, ze som ti dal zabrať, na dnes stačilo, co povieš?\n";
        cout << "Ako si spokojný so svojim vyučujúcim(so mnou)?\n";
        int znamka;
        cout << "Ohodnoť vyučujúceho známkou od 1 do 5 ako v škole: ";
        cin >> znamka;
        cout << "\n";
        if (znamka == 1 || znamka == 2)   // symbol ||  znamená, že ak jedna z podmienok 
nastane, tak sa vykonajú jednotlivé príkazy v tele podmienky 
        {
            cout << "Som rad, ze si spokojný ;)\n";
            cout << "Uvidíme sa nabudúce, maj sa\n";
            return 0;
        }
        else cout << "Je mi ľuto, ze sa ti nepáčil malý kurz, budem sa nabudúce 
viac snažiť ;)\n";
        return 0;
    }
    else cout << "Ani písať poriadne nevieš, za trest si program spustiš ešte raz, 
zatiaľ sa maj!";
    return 0;
}

V príklade som využil stream cout, cin a podmienky. Podmienky sa určite objavia v ďalších častiach seriálu a sú veľmi dôležitou súčasťou moderného vývoja softvéru.

Myslím, že príklad dá nováčikom potrebnú prax pre zvládnutie stream coutcin. V ďalších častiach sa už k tomu nebudeme zaoberať.

Funkcia scanf()

Tak, ako printf vieme využiť v jazyku C++ na výstup programu, aj funkciu scanf vieme využiť ako vstup v C++.

Nezabudnite na hlavičkový súbor #include <stdio.h>.

2.príklad: použitie funkcie scanf() a preopakovanie funkcie printf()

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
    int vek;
    printf("Zadajte váš vek: ");
    scanf("%d", &vek);  
    printf("Váš vek je %d\n", vek);
    return 0;
}

Nahoru

Příspěvky

Programovanie v jazyku C++: Stream cin
Payne 3. 06. 2016, 11:34:15
Odpovědět  Odkaz 
A co tak, když chceš získat int ale uživatel zadá textový řetězec... Cin vyhodí chybu a je třeba jí ošetřit.. To už zde nezmiňujete
Petr Valach Re: Programovanie v jazyku C++: Stream cin
Petr Valach 3. 06. 2016, 21:33:53
Odpovědět  Odkaz 
A ten povýšený tón má být jako co??
Lukáš Jelínek Re: Re: Programovanie v jazyku C++: Stream cin
Lukáš Jelínek 4. 06. 2016, 00:57:40
Odpovědět  Odkaz 
Klid, o nic přece nejde (a žádný povýšený tón nevidím) ;-)

Nemyslím si, že ošetřování chyb streamů musí být nutně v tomto dílu seriálu, ono není zase tak úplně triviální.
Re: Re: Re: Programovanie v jazyku C++: Stream cin
NULL 4. 06. 2016, 10:55:48
Odpovědět  Odkaz 
Ovšem vzhledem délce dílu by se sem nejspíš vešlo.
Re: Re: Programovanie v jazyku C++: Stream cin
random_name_generator() 7. 06. 2016, 14:22:58
Odpovědět  Odkaz 
A bodyguard se ozval :-D
Petr Valach Re: Re: Re: Programovanie v jazyku C++: Stream cin
Petr Valach 8. 06. 2016, 00:26:19
Odpovědět  Odkaz 
Eda je z mé redakce, já ho do LinuxExpresu přivedl, pokud po něm někdo cíleně a neodůvodněně půjde a bude mu veřejně plivat do obličeje, tak se vždycky ozvu.
Re: Re: Re: Re: Programovanie v jazyku C++: Stream cin
daks 8. 06. 2016, 08:40:56
Odpovědět  Odkaz 
Nemyslím si, že by po autorovi někdo "šel", nebo mu nedejbože plival do obličeje, to nahoře mi přijde jako normální připomínka. V seriálech se často objevují triviální příklady s tím, že v pokračování se objeví jejich "vylepšená" verze s ošetřením výjimek a pod. Jen je možná lepší v článku na to čtenáře upozornit ve stylu "uvedený příklad je velmi jednoduchý a v praxi by nefungoval v situaci..."
Petr Valach Re: Re: Re: Re: Re: Programovanie v jazyku C++: Stream cin
Petr Valach 8. 06. 2016, 17:30:49
Odpovědět  Odkaz 
Určitě mi šlo o dikci, neposuzoval jsem motivy dotyčného, ale především jsem to myslel obecně.
Re: Re: Re: Re: Re: Re: Programovanie v jazyku C++: Stream cin
NULL 10. 06. 2016, 09:33:23
Odpovědět  Odkaz 
Jestli ona ta dikce nevznikla spíš při čtení toho příspěvku, než při jeho psaní. Ze všech komentářů které jsem kdy četl, tento není v agresivní dikci nebo účelovém napadání ani z 10%
Petr Valach Re: Re: Re: Re: Re: Re: Re: Programovanie v jazyku C++: Stream cin
Petr Valach 10. 06. 2016, 10:33:44
Odpovědět  Odkaz 
Chybnou interpretaci nevylučuji, a hlavně si myslím, že to není třeba dále řešit.
Re: Re: Re: Re: Re: Re: Re: Re: Programovanie v jazyku C++: Stream cin
NULL 10. 06. 2016, 18:24:12
Odpovědět  Odkaz 
No, aspoň se to vyjasnilo
Programovanie v jazyku C++: Stream cin
Livan 8. 06. 2016, 10:13:55
Odpovědět  Odkaz 
V ukázkovém kódu je pár nepřesností.
1. v podmínce if (odpoved == " nie" ) by neměla být ta mezera před nie v těch uvozovkách
2. v poznámce, která začíná // došlo ve výpisu k zalomení, takže druhý řádek bude zpúsobovat problémy pŕi kompilaci, proto by bylo lepší dát ji do bloku /* */. // platí jen do konce daného řádku.

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz