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

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

Programovanie v jazyku C++: Cykly (2)

cplusplus.png

V článku sa pozrieme na zaujímavý vzťah medzi cyklom for a poľom. Tieto poznatky vám uľahčia pri manipulácii s poľami.


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.

Nahoru

Příspěvky

Programovanie v jazyku C++: Cykly (2)
strepon 31. 10. 2016, 18:49:26
Odpovědět  Odkaz 
"Pripomeňme si, že polia predstavujú nejaké bunky v pamätí a pre všetky polia platí, že ich ukončuje ukončovaci znak."

Tohle se přece týká jen pole typu char (a místo něj by se asi slušelo používat string, když je řeč o C++).
Eduard Boldižár Re: Programovanie v jazyku C++: Cykly (2)
Eduard Boldižár 31. 10. 2016, 23:18:33
Odpovědět  Odkaz 
Vďaka za upozornenie, moja chyba. Bude menšia korekcia textu.
Programovanie v jazyku C++: Cykly (2)
Tomas 1. 11. 2016, 07:56:25
Odpovědět  Odkaz 
Súhlasím, že vhodnejšie by bolo používať string a iterátor, keď je to C++.

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