Linux E X P R E S

Facebook

Programovanie v jazyku C++: Cykly (3)

C++

V článku si ukážeme jednoduchú manipuláciu reťazca pomocou cyklu for. Ešte predtým si ukážeme algoritmus, ktorý rozhodne, či číslo je alebo nie je prvočíslom. 


Prvočísla

Prv, než prejdeme na využitie cyklu for v reťazcoch, vám chcem ukázať zaujímavý algoritmus, ktorý sa vám môže hodiť.

Prvočísla sú také prirodzené čísla, ktoré sú deliteľné bez zvyšku len 1 a zároveň sebou samým. Číslo 1 ale nie je prvočíslo. Prvočíslom môžu byť len nepárne čísla, pretože párne sú deliteľné 2. Jedine číslo 2 je výnimkou a je prvočíslom.

Príklad prvočísla je číslo 3. Vieme ho vydeliť bez zvyšku len 1 a 3. Číslo 4 vieme vydeliť 2, čiže nie je prvočíslo. Vytvoríme si program, ktorý nám nájde prvočísla.

1. príklad: Program na testovanie, čí číslo je prvočíslom

#include <iostream>   // hlavičkové súbory
#include <cmath>
using namespace std;  // priestor mien
int main()  // hlavná funkcia main
{
    int n;  //deklarácie premenných
    cout << "Zadajte cislo na otestovanie, ci je prvocislom: ";  // výpis
    cin >> n;  // vstup
    if (n == 1)  // podmienka
    {
        cout << "Cislo "<<n<<" nie je prvocislo!\n";
        return 0;        
    } 
   
    if (n == 2)
    {
        cout << "Cislo "<<n<<" je prvocislo!\n";
        return 0;
    }
    if (n < 1)
    {
        cout << "Zly vstup!\n";
        return 0;
    }
    if (n % 2 == 0)
    {
        cout << "Cislo "<<n<<" nie je prvocislom!\n";
        return 0;
    }
    int hranica = (int) sqrt(n);
    
    for (int i = 3; i <= hranica; i += 2)
    {
        if (n % i == 0)
        {
            cout << "Cislo "<<n<<" nie je prvocislom!\n";
            return 0;
        }
    }       
    cout << "Cislo "<<n<<" je prvocislom!\n";
    return 0;
}

Výsledok:

Zadajte cislo na otestovanie, ci je prvocislom: 5
Cislo 5 je prvocislom!

Rozbor programu: Prvý krok je zo strany užívateľa, ktorý zadá číslo na otestovanie, čí je prvočíslo. V druhom kroku ošetríme vstup. Ak je vstup 1, nie je prvočíslo. Ak menšie ako 1, ide o zlý vstup. Ošetríme aj číslo 2, pretože je to jediné párne číslo, ktoré je zároveň prvočíslo. Algoritmus samotný pracuje len s nepárnymi číslami. V treťom kroku určíme vytvoríme odmocninu z vstupného čísla. Následne pomocou cyklu rozhodneme, či je dané číslo prvočíslo.

Cyklus for a reťazce

Podobne ako pole, i s reťazcami vieme pracovať pomocou for. Pozor davajte na ukončovací znak pri reťazcoch. Tak poďme na príklady

2. príklad: Jednoduchý príklad na reťazec s cyklom for

#include <iostream>
#include <string>
using namespace std;
int main()
{
string name = "supermoon";
for (int i = 0; i < 9; i++)
{
cout <<name[i];   
}
return 0;
}

Výsledok:

supermoon

Rozbor programu: Súhlasím, je to príklad ktorý môže byť hodený do koša. Predsa string vieme vypísať bez problémov i bez cyklu. Je to len ukážka, že pole či reťazec, práca s nimi je rovnaká. Až na malú drobnosť pri reťazci, ktorý má ukončovací znak.

3. príklad: Napíšeme reťazec odzadu

#include <iostream>
#include <string>
using namespace std;
int main()
{
string name = "supermoon";
for (int i = 8; i >= 0; i--) 
{
cout <<name[i];   
}
cout << "\n";
return 0;
}

Výsledok

noomrepus

4. príklad: Na koniec ešte jeden príklad

#include <iostream>
#include <string>
using namespace std;
int main()
{
string name = "supermoon";
for (int i = 0; i < 3; i++) 
{
cout << name[i+3];   
}
cout << "\n";
return 0;
}

Výsledok:

erm

Rozbor programu:

Čo sme urobili v programe? My sme posunuli o 3 miest v reťazci. Takto jednoducho sa dajú manipulovať s reťazcami. Ale pozor na hranice reťazca (alebo poľa). Veľmi rýchlo sa dá vybočiť mimo priestor určenému poľu či reťazcu.

Nabudúce si ukážeme varianty cyklu while.

Diskuze (12) Nahoru