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)

PointX - news (2016)

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: *



Public Relations

Využijte letní akce na předplatné časopisu IT Systems!

Nenechte si ujít příležitost dostávat pravidelně informace ze světa podnikové informatiky a předplaťte si časopis IT Systems. Udržujte si přehled v oboru a získejte inspiraci, jak využít informační technologie pro vaši firmu nebo organizaci. K pořízení nebo obnovení předplatného IT Systems je nyní ideální příležitost. Právě totiž probíhá letní akce, v rámci níž je možno získat roční předplatné jen za 599 Kč.

Pokračování ...