Contact și feedback

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.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

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 (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):

https://i.ibb.co/jrBXK8b/image.png

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

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

Cuprinsul lecției

Se încarcă…

Citește și

Interschimbarea a două variabile în C++ (3 metode)Indicatorul lui Euler în C++Funcții predefinite în C++ (matematice, șiruri de caractere)Matrice pătratice în C++. Diagonala principală și secundarăDivide et Impera (metodă de programare C++)Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Do while vs while în C++ - Care e diferența?Cel mai mare divizor comun (CMMDC) a două numere în C++Numărul de cifre ale factorialului unui numărInversarea unui vector în C++Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Transformarea unui număr din baza 2 în baza 10 în C++Instrucțiunea continue (structuri repetitive)Instrucțiunea break (structuri repetitive)Numărul combinărilor în C++ (formula combinărilor)CMMDC recursiv a două numere naturale în C++Căutare binară în C++Instrucțiunea for (structuri repetitive)Comentarii în C++Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Verificare dacă șir de caractere este palindrom în C++Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorOglinditul unui număr în C++Cel mai frecvent element dintr-un șir în C++Cum să citești și să afișezi în fișiere în C++Cifra de control a unui numărCum să calculezi instant 2 la puterea N în C++Complexitatea unui algoritm (timp și spațiu) în C++Citirea și afișarea matricelor în C++Cea mai lungă secvență de elemente crescătoare în C++Al N-lea termen dintr-o progresie aritmeticăVerifică dacă un număr este par sau impar fără modulo în C++Calculul combinărilor de n luate câte k (nCk) în C++Numere triunghiulare. Verificarea unui număr triunghiularNumărul minim de peroane pentru o gară în C++Vectorii în C++: declarare și parcurgereVerifică dacă trei puncte sunt coliniare C++Factorialul unui număr în C++Vectorii în C++: citire și afișareVerifică dacă o literă este vocală în C++Pointer în C++. Variabile de tipul char * (char steluță)Al N-lea termen Fibonacci în C++Valoarea absolută (modulul) unui număr în C++Ce este o funcție void în C++?Suma 1 + 2 + 3 + ... + N în C++Ce înseamnă variabilă globală și locală în C++?Verifică dacă un număr dat este o putere de 2 în C++Câte numere naturale sunt într-un interval dat? (C++)Radicalul unui număr în C++ (rădăcina pătrată)Află secolul unui an citit de la tastatură în C++Tipul struct în C++. Ce sunt structurile de date neomogeneVectori de frecvență (de apariții) în C++Verificare număr prim în C++ (Clasa a IX-a)Suma numerelor naturale dintr-un interval dat în C++Aria și circumferința unui cerc în C++Numărul permutărilor în C++ (formula permutărilor)Ce înseamnă endl în C++?Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleOglinditul recursiv al unui număr în C++Generarea șirului Fibonacci generalizat în C++Maximul și minimul a două valori în C++Bordarea unei matrice în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortMaximul și minimul a n valori în C++Suma divizorilor unui număr în C++Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Verificare dacă un număr este palindrom în C++Cifra maximă și minimă a unui număr în C++Afișarea divizorilor primi ai unui număr în C++Recursivitate în C++Prima cifră a unui număr în C++Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Aflarea sumei primelor N sume GaussCMMMC a două numere în C++ (cel mai mic multiplu comun)Cum să afișezi partea întreagă a unui număr real în C++Șirul lui Fibonacci în C++Interclasarea a doi vectori în C++Operații cu numere mari în C++ - Toate funcțiile explicateTransformarea unei litere mari în literă mică în C++Inversarea unui șir de caractere în C++Al N-lea termen dintr-o progresie geometricăCel mai puțin semnificativ bit în C++Cifrele unui număr. Prelucrarea cifrelor unui număr în C++Funcții în C++. Ce sunt subprogrameleVerifică dacă un caracter este literă în C++De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Structuri repetitive (while, do while, for, etc)Numărul de apariții al unui număr într-un vector în C++Cel mai semnificativ bit în C++Verifică dacă o literă este mică sau mare în C++Rădăcina cubică a unui număr în C++ (cube root)Codul ASCII (tabel complet)Distanța dintre două puncte în C++Numărul de divizori primi ai unui număr în C++Algoritm recursiv pentru căutare binară (clasa a X-a)Maximul și minimul unui vector în C++Afișarea elementelor unui vector recursiv în C++Citește un șir de caractere cu spații în C++Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Șiruri de caractere în C++. Tot ce trebuie să știiInstrucțiunea do while (structuri repetitive)Transformarea unei litere mici în literă mare în C++Numărul de divizori al unui număr în C++Verifică dacă un caracter este cifră în C++Copiuțe: Cifrele unui numărInstrucțiunea de decizie în C++: if, else, switch, caseMatrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicVerificarea unui an bisect în C++Ciurul lui Eratostene în C++Numărul aranjamentelor în C++ (formula aranjamentelor)Suma elementelor unui vector recursiv în C++Verifică dacă un număr aparține șirului Fibonacci în C++Cifra maximă a unui număr recursiv în C++Tipuri de date în C++: numere întregi, reale, caractere și alteleCombinatorică în C++: permutări, aranjamente, combinări și alteleMateria pentru olimpiada de informatică - tot ce trebuie să știiAria unui triunghi folosind coordonatele acestora în C++Transformarea unui număr din baza 10 în baza 2 în C++Ce este o variabilă unsigned în C++?Cel mai mic număr cu suma cifrelor N în C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăMediana unui șir de valori în C++Maximul și minimul a trei valori în C++Instrucțiunea while (structuri repetitive)

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont