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++.

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

Soulad s normou nemusí znamenat bezpečnost

ALEFNemusíme se vracet daleko do minulosti, aby bylo možné pozorovat IT oddělní velkých společností, jak se soustředí téměř výhradně na efektivitu poskytovaných služeb pro primární účely organizace. Proč také ne? Informační bezpečnost byla výsadou několika málo oborů a většina organizací si vystačila s firewallem a antivirovým programem.

Pokračování ...


IBM POWER

Redakční blog

Pavel Fric

Pavel Fric, 21. August

Sayonara Player 1.5.1

Přehrávač, jak má být. Poslední dobou vývoj šlape


Pavel Fric

Pavel Fric, 26. January

MuseScore 3

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


Redakce

Redakce, 21. December

Pište pro LinuxEXPRES

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


Všechny blogy »