Verifică dacă un caracter este cifră în C++
Dându-se un caracter c
, să se verifice dacă este sau nu o cifră.
Exemplu. Pentru c = '3'
, răspunsul este DA
, iar pentru c = 'A'
,
răspunsul este NU
.
Metoda 1 (codul ASCII)
Ne vom folosi de codul ASCII al caracterului citit, c
.
Ce este codul ASCII al unui caracter?
Când se stabileau bazele programării, era nevoie de o modalitate ușoară de a reprezenta caractere (litere, simboluri diverse sau chiar cifre). S-a dovedit că cea mai ușoară metodă ar fi să i se atribuie fiecărui caracter câte un număr unic, astfel, un text putea fi reprezentat foarte ușor în cifre și implicit în binar (deoarece calculatoarele funcționează în binar).
Astfel, s-a standardizat un tabel de acest tip numit ASCII (A merican
S tandard C ode for I nformation I nterchange). Mai exact,
s-au ales 128
(și mai târziu 256
) de caractere, primului caracter fiindu-i
atribuit valoarea 0
, al doilea — valoarea 1
, …, al 128
-lea — valoarea
127
.
Aceste valori nu sunt așezate aleatoriu: dacă cifra 0
(zero) are codul 48
,
cifra 1
are codul 49
și așa mai departe. Iată tabelul ASCII complet
(sursa: ResearchGate.net):
Cum verificăm că un caracter este o cifră?
Deoarece caracterele sunt consecutive, va trebui să verificăm dacă codul ASCII
al caracterului nostru este între codul ASCII al caracterlor 0
și 9
.
Mai exact, va trebui să verificăm:
if(48 <= c && c <= 57) //48 - 57 ('0' - '9')
Din fericire, putem simplifica și mai mult: dacă apelăm 'caracter'
, o să ne
returneze codul său ASCII. Așadar, verificarea se reduce la următoarea
expresie (care este mai logică):
if('0' <= c && c <= '9')
Implementare C++
Pentru a verifica că un caracter este sau nu cifră, vom proceda astfel:
#include <iostream>
using namespace std;
int main()
{
//Declarăm și citim caracterul nostru, c
char c;
cin >> c;
//Verificăm dacă este cifră, folosind algoritmul explicat mai sus
if('0' <= c && c <= '9') { //Este cifră
cout << c << " este o cifra";
} else { //Nu este
cout << c << " nu este o cifra";
}
return 0;
}
Metoda 2 (funcție predefintă isdigit
)
O altă metodă este să folosim funcția predefinită isdigit
din cadrul
bibliotecii <cstring>
. Funcția ia ca parametru un caracter. Astfel, codul
devine următorul:
#include <iostream>
#include <cstring> //Pentru a accesa funcția isdigit
using namespace std;
int main()
{
//Declarăm și citim caracterul nostru, c
char c;
cin >> c;
//Verificăm dacă este cifră, folosind funcția isdigit (explicații mai sus)
if(isdigit(c)) { //Este cifră
cout << c << " este o cifra";
} else { //Nu este
cout << c << " nu este o cifra";
}
return 0;
}
Alte resurse sau bibliografie
DS
Autorul acestei lecții
Dominic Satnoianu
Această lecție a fost redactată de către Dominic Satnoianu.
© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.
Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.
Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.
Comentarii 0