Linux E X P R E S

Facebook

Programovanie v jazyku C++: Knižníca cctype (4)

C++

V zaverečnom dieli minicyklu o knižnici cctype si ukážeme niektoré zaujímave funkcie napr. testovanie znaku, či je alfanumerický. 


Funkcia isalnum

Či je znak alfanumerický, zistíme s pomocou funkcie isalnum.

1. príklad:

#include <iostream>  // hlavičkové súbory
#include <cctype>

using namespace std;   // priestor mien

int main()   //hlavna funkcia main
{
    string retazec = "abc123";   // naš zvolený reťazec
    int pocitadlo = 0;

    for (size_t i = 0; i < retazec.size(); i++)   // cyklus
    {
        if (isalnum(retazec[i]))   // počítame počet alfanumerických znakov
            pocitadlo++;
    }

    cout << "Pocet alfanumerickych znakov v nasom zadanom retazci je: " << pocitadlo << "\n";   // výpis na obrazovku

    return 0;   // koniec programu
}

Výsledok programu:

Pocet alfanumerickych znakov v nasom zadanom retazci je: 6

Ukážme si teraz situáciu, že by bolo napísané v nejakom manuáli k programu, ako zadať meno a priezvisko do počítača. Avšak by bolo v manuáli chybné zadanie a preto zadá užívateľ napr. Eva/Novakova miesto Eva Novakova. Ako zameníme znak / na medzeru? To si ukážeme v druhom programe.

2. príklad:

#include <iostream>  // hlavičkové súbory
#include <cctype>
using namespace std;   // priestor mien

int main()   // hlavna funkcia main
{
    string retazec = "Evicka/Novakova";   // naš zvolený reťazec

    for (size_t i = 0; i < retazec.size(); i++)   // cyklus
    {
        if (!isalnum(retazec[i]))   
            retazec[i] = ' ';
    }

    cout << "Meno bolo zadane zle! Spravne meno a priezvisko: " << retazec << "\n";   // výpis na obrazovku

    return 0;   // koniec programu
}

Výsledok programu:

Meno bolo zadane zle! Spravne meno a priezvisko: Evicka Novakova

Funkcia isalpha

Funkcia isalpha si všíma len znaky, ktoré patria do abecedy. Presvedčme sa sami v treťom príklade.

3. príklad:

#include <iostream> // hlavičkové súbory
#include <cctype>

using namespace std; // priestor mien

int main() // hlavna funkcia main
{
  string retazec = "Alpha1Andromedae"; // naš zvolený reťazec
  int pocitadlo = 0;

  for (size_t i = 0; i < retazec.size(); i++) //cyklus
  {
    if (!isalpha(retazec[i]))
      pocitadlo++;
  }

  cout << "Pocet neabecednych znakov: " << pocitadlo << "\n"; // výpis na obrazovku

  return 0; // koniec programu
}

Výsledok programu:

Pocet neabecednych znakov: 1

Skúsme tak ako pri funkcii isalnum, pozmeniť reťazec do správnej podoby.

4. príklad:

#include <iostream>  // hlavičkové súbory
#include <cctype>

using namespace std;   // priestor mien

int main()   // hlavna funkcia main
{
    string retazec = "Alpha1Andromedae";   // naš zvolený reťazec

    for (size_t i = 0; i < retazec.size(); i++)   // cyklus
    {
        if (!isalpha(retazec[i]))
            retazec[i] = ' ';
    }

    cout << "Poznas hviezdicku " << retazec << " zo suhvezdia Andromeda?\n";   // výpis na obrazovku

    return 0;   // koniec programu
}

Výsledok program:

Poznas hviezdicku Alpha Andromedae zo suhvezdia Andromeda?

Funkcia ispunct

Ako už z názvu vyplýva, funkcia testuje, či znak patrí do interpukcie. Ktoré znaky sú do interpukcie zahrnuté nám ukáže piatý program.

5. príklad:

#include <iostream>  // hlavičkové súbory
#include <cctype>

using namespace std;   // priestor mien

int main()   // hlavna funkcia main
{
    for (int i = 0; i < 256 ; i++)   // cyklus
    {
        if (ispunct(i))   // test, či je znak interpukciou  
            cout << static_cast<char>(i);
    }

    return 0;   // koniec programu
}  

Výsledok programu:

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Fajn, to by bolo všetko ku knižnici cctype. Mali by ste byť schopní už samostatne pracovať s touto knižnicou a určite nájdete ďalšie typy a triky na internete. Nabudúce začneme nový minicyklus o manipulácii s reťazcami.

Diskuze (4) Nahoru