Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.
Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.
Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
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
.
Ne vom folosi de codul ASCII al caracterului citit, c
.
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 (American Standard Code for Information Interchange). 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):
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')
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;
}
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;
}