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

Linux E X P R E S, Programovanie v jazyku C++: Knižníca cctype (4)

Control

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


reklama

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.

Nahoru

(Jako ve škole)
Průměr: 2,25 | Hodnotilo: 8
 

Top články z OpenOffice.cz

Příspěvky

Programovanie v jazyku C++: Knižníca cctype (4)
Daniel Kozák 10. 08. 2017, 22:12:36
Odpovědět  Odkaz 
Je to smutné, že už po tolikáté musím dát hodnocení 5. Nebylo by opravdu lepší se už na to vykašlat? Vaše ukázky jsou velmi zavádějící, spíše lživé a učí velmi špatné postupy.
Eduard Boldižár Re: Programovanie v jazyku C++: Knižníca cctype (4)
Eduard Boldižár 10. 08. 2017, 22:21:44
Odpovědět  Odkaz 
Ďakujeme za názor, ale podobné vyučovacie programy pre začiatočníkov sú všade rovnaké, či už v knihách alebo na internete :) Pekný deň želám :D
Re: Programovanie v jazyku C++: Knižníca cctype (4)
Livan 11. 08. 2017, 08:39:37
Odpovědět  Odkaz 
Vážený pane, pokud jste skutečně přesvědčen o tom, že je tam něco špatně, bylo by lepší to napsat konkrétně aj se správnym řešením. Protože jinak je to pouze trolení. Čiže napíšu to a to je špatně, protože to a to a má to správně být takto.
Re: Programovanie v jazyku C++: Knižníca cctype (4)
Tomas 13. 08. 2017, 20:24:45
Odpovědět  Odkaz 
Vasa kritika je absolutne nepresna a zavadzajuca. Skor poukazuje, ze problem bude na Vasej strane. Ale treba bojovat, vsetko sa da prekonat ;-)

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



 
 

Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky Exospace.cz. Mám 23 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.


  • Distribuce: ubuntu
  • Grafické prostředí: unity
  • Hodnocení autora: *


Redakční blog

Pavel Fric

Pavel Fric, 23. říjen

Nové motivy pro přehrávač Sayonara

Pomozte rozšířit možnost měnit vzhled programu za běhu


Pavel Fric

Pavel Fric, 28. únor

Lollypop


Pavel Fric

Pavel Fric, 29. listopad

Palapeli


Všechny blogy »