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.








