Pole a cyklus for
Ukážeme si, ako môžeme efektívne využiť cyklus for pri práci s poľami. Pripomeňme si, že polia predstavujú nejaké bunky v pamätí. Dáme si pár príkladov, pri ktorých sa naučíme pracovať s poliami cez cyklus for.
1. príklad: Príklad na rozohriatie
#include <iostream> // hlavičkový súbor using namespace std; // priestor mien int main() // hlavná funkcia main { int pole[] = {5588, 587468, 787878787, 111111, 10}; // deklarácia poľa for(int i = 0; i < 5; i++) { cout << pole[i]<<" "; } return 0; }
Výsledok:
5588 587468 787878787 111111 10
Rozbor programu: Čo si treba uvedomiť a je dôležité, že pole v programe má 5 prvkov! Ak premennú i inicializujeme na 0 a podmienku dáme, že cyklus beží pokým premenná i je menšia ako hodnota 5. Spolu je to 5 iterácii!
Takto sa vytvárajú efektívne cykly pri využití polí či reťazcov. A prečo efektívne? Prečo sme nemohli zvoliť premennú i napríklad 1? Alebo 2 alebo iné pekné celé číslo, podľa ľúbostí? Je to preto, že indexovanie polí začína od 0! A na efektívnu prácu s poliami musíte myslieť na indexovanie polí.
Všimnite si zápis: „pole[i]“. Takýto zápis znamená, že hodnota premennej i sa zahrá na index bunky v polí. Inak povedané, ak hodnota premennej i je 2, tak budeme vykonávať operáciu (v tomto prípade výpis hodnoty) v bunke (resp. prvku), ktorá je tretia v poradí.
Takto je základná teória k využití cyklu for v poliach.
2. príklad: Skúsme vypísať pole obrátene
#include <iostream> using namespace std; int main() { int pole[] = {5588, 587468, 787878787, 111111, 10}; for(int i = 4 ; i >= 0; i--) { cout << pole[i]<<" "; } return 0; }
Výsledok:
10 111111 787878787 587468 5588
3. príklad: Vypíšeme len párne hodnoty
#include <iostream> using namespace std; int main() { int pole[] = {5588, 587468, 787878787, 111111, 10, 45489, 1254568}; for(int i = 0 ; i < 7; i++) { if(pole[i] % 2 == 0) cout << pole[i]<<" "; } return 0; }
Výsledok:
5588 587468 10 1254568
4. príklad: A čo nepárne? Oslaďme si program tak, že ak je číslo párne, vynásob sa sám so sebou
#include <iostream> using namespace std; int main() { int pole[] = {5588, 587468, 787878787, 111111, 10, 45489, 1254568}; for(int i = 0 ; i < 7; i++) { if(pole[i] % 2 != 0) cout << pole[i]<<" "; else cout << pole[i]*pole[i]<<" "; } return 0; }
Výsledok:
31225744 1521267344 787878787 111111 100 45489 1982836288
Faktoriál
Ukážeme si algoritmus počítania faktoriálu čísla. Faktoriál čísla n je rovný súčinu všetkých prirodzených čísel, ktoré sú rovné alebo menšie ako n.
Pár ukážok:
0! = 1
1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 =24
5! = 5 * 4 * 3 * 2 * 1 = 120
atď…
V nasledujúcom programe využijeme faktoriál do 10. Faktoriál 10! je 3 628 800. To je už veľké číslo. Pre názornú ukážku nám stačí faktoriál do 10. Kto chce experimentovať, môžete ale pozor, pre veľké čísla využite premennú typu long a ďalšie variácie.
5. príklad: Faktoriál čísla
#include <iostream> using namespace std; int main() { int number; cout << "Zadajte cislo od 0 do 10 z ktoreho chcete vypocitat faktorial: "; cin >> number; int faktorial = 1; if(number == 0 || number == 1) { cout << "Faktorial cisla "<<number<<" je: "<<faktorial; return 0; } if(number < 0 || number > 10) { cout << "Nepripustna operacia"; return 0; } for(int i = number; i > 1; i--) { faktorial = i * faktorial; } cout << "Faktorial cisla "<<number<< " je: "<<faktorial; return 0; }
Výsledok: Otestujte program, či fakt dáva faktoriál zadaného čísla.