Funcții pentru Prelucrarea Caracterelor din Biblioteca în C++ 3
1. Obiectivele lecției:
- Să înțeleagă scopul și utilizarea funcțiilor din biblioteca <cctype> pentru prelucrarea caracterelor.
- Să implementeze exemple practice folosind aceste funcții.
- Să aplice funcțiile în probleme care implică manipularea șirurilor și caracterelor.
2. Funcțiile principale din <cctype>
Biblioteca <cctype> oferă funcții utile pentru clasificarea și transformarea caracterelor. Aceste funcții lucrează cu valori de tip char sau int și returnează rezultate de tip int sau bool.
1. Clasificarea caracterelor
Funcție | Descriere | Exemplu |
isalnum(c) | Verifică dacă c este literă sau cifră. | isalnum(‘a’) -> true |
isalpha(c) | Verifică dacă c este literă. | isalpha(‘A’) -> true |
isdigit(c) | Verifică dacă c este cifră. | isdigit(‘5’) -> true |
islower(c) | Verifică dacă c este literă mică. | islower(‘a’) -> true |
isupper(c) | Verifică dacă c este literă mare. | isupper(‘Z’) -> true |
isspace(c) | Verifică dacă c este spațiu alb. | isspace(‘ ‘) -> true |
ispunct(c) | Verifică dacă c este caracter de punctuație. | ispunct(‘!’) -> true |
isprint(c) | Verifică dacă c este caracter printabil. | isprint(‘A’) -> true |
iscntrl(c) | Verifică dacă c este caracter de control. | iscntrl(‘\n’) -> true |
isgraph(c) | Verifică dacă c este printabil și vizibil. | isgraph(‘A’) -> true |
2. Transformarea caracterelor
Funcție | Descriere | Exemplu |
tolower(c) | Transformă c în literă mică (dacă este posibil). | tolower(‘A’) -> ‘a’ |
toupper(c) | Transformă c în literă mare (dacă este posibil). | toupper(‘a’) -> ‘A’ |
3. Exemple de utilizare
Exemplu 1: Clasificarea caracterelor
#include <iostream>
#include <cctype>
using namespace std;
int main() {
char c;
cout << „Introduceti un caracter: „;
cin >> c;
if (isalpha(c)) {
cout << c << ” este o litera.” << endl;
if (islower(c)) {
cout << c << ” este litera mica.” << endl;
} else {
cout << c << ” este litera mare.” << endl;
}
} else if (isdigit(c)) {
cout << c << ” este o cifra.” << endl;
} else if (isspace(c)) {
cout << c << ” este un spatiu alb.” << endl;
} else if (ispunct(c)) {
cout << c << ” este un caracter de punctuatie.” << endl;
} else {
cout << c << ” este un caracter special sau necunoscut.” << endl;
}
return 0;
}
Exemplu 2: Transformarea caracterelor
#include <iostream>
#include <cctype>
using namespace std;
int main() {
char c;
cout << „Introduceti o litera: „;
cin >> c;
if (isalpha(c)) {
cout << „Litera mare: ” << (char)toupper(c) << endl;
cout << „Litera mica: ” << (char)tolower(c) << endl;
} else {
cout << c << ” nu este o litera.” << endl;
}
return 0;
}
Exemplu 3: Numărarea tipurilor de caractere într-un șir
#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;
int main() {
char sir[100];
cout << „Introduceti un sir de caractere: „;
cin.getline(sir, 100);
int litere = 0, cifre = 0, spatii = 0, punctuatii = 0;
for (int i = 0; i < strlen(sir); i++) {
if (isalpha(sir[i])) {
litere++;
} else if (isdigit(sir[i])) {
cifre++;
} else if (isspace(sir[i])) {
spatii++;
} else if (ispunct(sir[i])) {
punctuatii++;
}
}
cout << „Litere: ” << litere << endl;
cout << „Cifre: ” << cifre << endl;
cout << „Spatii: ” << spatii << endl;
cout << „Punctuatii: ” << punctuatii << endl;
return 0;
}
4. Activități practice pentru elevi
- Scrieți un program care transformă toate literele mici dintr-un șir în litere mari.
- Realizați un program care elimină toate caracterele de punctuație dintr-un șir.
- Implementați un program care numără toate vocalele și consoanele dintr-un șir.
5. Scheme logice
- Clasificarea unui caracter:
- Start -> Verifică tipul caracterului folosind funcțiile din <cctype> -> Afișează rezultatul -> Stop.
- Transformarea unui caracter:
- Start -> Verifică dacă caracterul este literă -> Aplică toupper sau tolower -> Afișează rezultatul -> Stop.
6. Concluzie:
- Funcțiile din <cctype> sunt utile pentru manipularea și clasificarea caracterelor în C++.
- Acestea simplifică procesarea șirurilor și a datelor textuale.
- Practica utilizării acestor funcții ajută la rezolvarea problemelor complexe legate de prelucrarea textului.