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

Linux E X P R E S, Programovanie v jazyku C++: Tvorba funkcii (2)

Programovanie v jazyku C++: Tvorba funkcii (2)

C++

Naučte sa pracovať s návratovou hodnotou funkcii. Uvidíte aj implementáciu faktoriálu s využitím funkcie.


Návratová hodnota funkcii

Pre začiatok si vytvorme program, ktorý na základe vstupu od používateľa vyhodnotí, čí zadané číslo je párne alebo nie. Celú logiku vyhodnotenia natlačíme do main funkcie.

#include <iostream>
using namespace std;

int main()
{
    int cislo;
    bool jeParne;
    cout << "Zadaj cele cislo: ";
    cin >> cislo;
    if(cislo == 0)
    {
        cout << "Zadal si " << cislo << " a tak zopakuj volbu!\n";
        return 0;
    }

    cout << "Bolo zadane cislo: " << cislo << " a vyhodnocujem, tak trochu strpenia!!!\n";

    if(cislo % 2 == 0)
        jeParne = true;
    else
        jeParne = false;

    if(jeParne)
        cout << "Cislo " << cislo << " je parne!\n";
    else
        cout << "Cislo " << cislo << " je neparne!\n";
    return 0;
}

Ak máme vyhodnotiť len jedno číslo, tak vieme sa s tým popasovať. Čo ak máme viacero čísiel na vyhodnotenie? Praktickým riešením je vytvoriť si funkciu a teraz pozor, bude vracať nejakú určitú návratovú hodnotu. Skúsme teraz vyhodnotiť číslo v našej definovanej funkcii, ktorá vráti pravdivostnú hodnotu, či dané číslo je párne alebo nie.

#include <iostream>
using namespace std;

bool jeParne(int cislo)
{
    if(cislo % 2 == 0)
        return true;
    else
        return false;
}

int main()
{
    int cislo;
    cout << "Zadaj cele cislo: ";
    cin >> cislo;

    if(cislo == 0)
    {
        cout << "Zadal si " << cislo << " a tak zopakuj volbu!\n";
        return 0;
    }

    cout << "Bolo zadane cislo: " << cislo << " a vyhodnocujem, tak trochu strpenia!!!\n";

    if(jeParne(cislo))
        cout << "Cislo " << cislo << " je parne!\n";
    else
        cout << "Cislo " << cislo << " je neparne!\n";
    return 0;
}

Typ návratovej hodnoty sme definovali pred menom nasledovne: bool jeParne(int cislo). Všimnite si, že sme nepotrebovali definovať pravdivostnú premennú, ale samotná funkcia sa ujala tejto role viď. if(jeParne(cislo)).

Doteraz sme testovali len jedno číslo a zatiaľ sme plne neocenili možností zjednodušenia programu s pomocou funkcie. Zjednodušením myslíme to, že nemusíme písať test pre každé číslo alebo pre každý cyklus, postačí zavolať len danú funkciu.

Doplňme našu implementáciu o pole čísel, ktoré budeme testovať a jednotlivé testovanie uskutočníme v cykle.

#include <iostream>
using namespace std;

bool jeParne(int cislo)
{
    if(cislo % 2 == 0)
        return true;
    else
        return false;
}

int main()
{
    int cisloPole[5] = {1025,114,-589,2526,-9999};

    for(size_t i = 0; i < sizeof(cisloPole)/sizeof(cisloPole[0]);i++)
    {

        cout << "Bolo zadane cislo: " << cisloPole[i] << " a vyhodnocujem, tak trochu strpenia!!!\n";

        if(jeParne(cisloPole[i]))
            cout << "Cislo " << cisloPole[i] << " je parne!\n";
        else
            cout << "Cislo " << cisloPole[i] << " je neparne!\n";
    }
    return 0;
}

Faktoriál čísla

Faktoriálom čísiel sme sa už v jednom dieli venovali. Poďme z klasickej implementácie faktoriálu čísla (k dispozícii tu) pozmeniť na implementáciu s využitím funkcie. Okrem toho využijeme pole testovaných vzoriek a cyklus.

#include <iostream>
using namespace std;

int testFaktorial(int cislo)
{
  int faktorial = 1;
  for(int i = cislo; i > 1; i--)
  {
     faktorial = i * faktorial;
  }
  return faktorial;
}

int main()
{
  int poleCisel[5] = {3,5,6,8,9};

  for(size_t i = 0; i < sizeof(poleCisel)/sizeof(poleCisel[0]); i++)
  {
       cout << "Faktorial cisla "<<poleCisel[i]<< " je: "<<testFaktorial(poleCisel[i]) << "\n";
  }
  return 0;
}

Všimnite si, že funkciu voláme pri výpise a rovnako myslíme na jednotlivé indexy prvky poľa, ktoré prechádzame cez iterácie. Naša funkcia testFaktorial vracia typ návratovej hodnoty int.

V budúcom dieli si niečo povieme o rekurzívnych funkciách.

Nahoru

Příspěvky

Programovanie v jazyku C++: Tvorba funkcii (2)
Jano 14. 05. 2018, 15:14:57
Odpovědět  Odkaz 
Pre nedočkavcov:
std::function testFaktorial;
testFaktorial = [&](int n) -> int {
if(n == 0) {
return 1;
}
return testFaktorial(n - 1) * n;
};

std::array cisla{3, 5, 6, 8, 9};
for (auto c : cisla) {
cout
Programovanie v jazyku C++: Tvorba funkcii (2)
Jano 14. 05. 2018, 15:15:50
Odpovědět  Odkaz 
std::array cisla{3, 5, 6, 8, 9};
for (auto c : cisla) {
cout
Programovanie v jazyku C++: Tvorba funkcii (2)
Jano 14. 05. 2018, 15:16:56
Odpovědět  Odkaz 
OK, keďže je to primitívny CMS systém, tak mi odpustite za neúplné komentáre.

Přidat názor

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

Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 25 rokov. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.


  • Distribuce: ubuntu
  • Grafické prostředí: unity



Public Relations

Český startup umožňuje automatické investování

PortuPortu je první online automatizovaná investiční platforma v Česku. Sestaví vám portfolio na míru a vy se nemusíte o nic starat – jen sledovat, jak vaše peníze pracují za vás.

Pokračování ...


Redakční blog

Pavel Fric

Pavel Fric, 26. leden

MuseScore 3

První aktualizace třetí řady notačního editoru MuseScore


Redakce

Redakce, 21. prosinec

Pište pro LinuxEXPRES

Baví vás Linux? Pište o něm, není to nic těžkého. LinuxEXPRES hledá nové autory.


Pavel Fric

Pavel Fric, 23. říjen

Nové motivy pro přehrávač Sayonara

Pomozte rozšířit možnost měnit vzhled programu za běhu


Všechny blogy »

eXo space