Sunteți pe pagina 1din 4

Tipul char și vectori de caractere:

Tipul char ............................................................................................................................................................1


1. caractere imprimabile ............................................................................................................................1
2. caracterele neimprimabile, sau de control ............................................................................................2
Observații utile ...............................................................................................................................................2
Exerciții: ..............................................................................................................................................................2
Set 1 ................................................................................................................................................................2
Șiruri de caractere ..............................................................................................................................................2
Definiție: .........................................................................................................................................................2
Mod de memorare .........................................................................................................................................3
Citirea șirului ..................................................................................................................................................3
 Ca la vectori: .......................................................................................................................................3
 ca o variabilă neindexata, folosind comanda cin: ..............................................................................3
 cin.get(sir, dimensiune), cin.get(sir, dimensiune, caracter de oprire), cin.get() ................................3
 cin.getline(sir, dmensiune) .................................................................................................................3
Parcurgerea șirului .........................................................................................................................................3
Afișarea șirului ................................................................................................................................................3
 caracter cu caracter prin parcurgere..................................................................................................3
 ca o variabilă neindexată, folosind comanda cout .............................................................................3
Setul II .................................................................................................................................................................3

Tipul char
Pentru a memora în calculator caractere este necesară utilizarea unei reprezentări a
caracterelor prin numere. O astfel de reprezentare este Codul ASCII(este o formă de reprezentare în
calculator a caracterelor ).

Codul ASCII standard codifică caracterele folosind 7 biți, astfel că permite codificarea
a 27=128 caractere. De fapt sunt codificate numai literele din alfabetul englez, cifrele de la 0 la 9,
semnele de punctuație și operatorii, precum și alte simboluri. Lipsesc cu desăvârșire literele specifice
altor alfabete, precum și literele din alte alfabete: chirilic, ebraic, arab, chinez, etc. Pentru memorarea
acestor litere se poate folosi codul ASCII Extins, sau codul UNICODE.

Prin codul ASCII, fiecărui caractere reprezentat în acest cod i se asociază un număr. Aceste numere
(numite chiar coduri ASCII) se găsesc în intervalul 0 .. 127. Caracterele ASCII se împart în două
categorii:

1. caractere imprimabile – cele cu codurile ASCII în intervalul 32- 126, inclusiv capetele: aici
se regăsesc toate caracterele care au o reprezentare grafică bine determinată:
o literele mari: A ... Z, au coduri în [65,90]
o literele mici: a ... z, au coduri în [97,120]
o cifrele 0 .. 9, au coduri în [48,57]
o semnele de punctuație .,:;!?'"
ocaractere ce reprezintă operații aritmetice sau de alt tip: + - / * <> = (){}[]
oalte caractere: ~`@#$%^&_\|
ocaracterul spațiu
2. caracterele neimprimabile, sau de control – cu codurile 0 .. 31 și 127. Dintre aceste
caractere amintim două, de o importantă mai mare în limbajele de programare studiate:
o caracterul cu codul 0, numit și caracter nul, notat în C++ cu '\0' – reprezintă finalul
unui șir de caractere în memorie
o caracterul cu codul 10, numit Line Feed, notat în C++ cu '\n' – produce trecerea la rând
nou atunci când este afișat pe ecran sau într-un fișier.

Observații utile

 codurile ASCII ale literelor mici sunt mai mari decât codurile ASCII ale literelor mari ('a' > 'Z')
și diferența dintre codurile ASCII a două litere (mică – mare) este 32.
 cifrele au coduri consecutive: caracterul '0' are codul 48, caracterul '1' are codul 49, etc.
*Observăm că caracterul '0' nu are codul ASCII 0, ci 48.
 caracterul spațiu este un caracter imprimabil. Spațiul are codul ASCII 32.

Exerciții:
Set 1
1. Se citește un caracter de la tastatură. Scrieți câte o funcție pentru a verifica dacă caracterul
dat este:
a. literă mare
b. literă mică
c. vocală, literă mică
d. consoană, literă mică
e. vocală, literă mare
f. consoană, literă mare
g. literă mare sau mică
h. vocală mare sau mică
i. consoană mare sau mică
j. cifră: 0..9
k. spațiu
l. semn de punctuație: . , : ; ! ? ' "
m. operator matematic: +, - , /, %
n. operator relațional: <,>,=
Atenție! Toate funcțiile vor avea rezultat 1, dacă caracterul îndeplinește cerința, 0 în caz contrar
2. Se citește un caracter de la tastatură. Să se scrie câte o funcție care:
a. Transformă o literă mică in literă mare
b. Transformă o literă mare în literă mică
c. Transformă un caracter cifră în valoarea cifrei(număr natural)

Șiruri de caractere
Definiție: șirurile de caractere reprezentate ca tablouri unidimensionale cu elemente de tip char,
reprezentare care provine din limbajul C. Aceste șiruri se mai numesc null-terminated byte string
(NTBS). În reprezentarea internă, după ultimul caracter (byte, octet) valid din șir se află
caracterul '\0' – caracterul cu codul ASCII 0, numit și caracter nul.
Mod de memorare
Fie următoarea declarare: char s[15]=”INFORMATICA”;, atunci șirul s este memorat astfel:

CARACTERE: ’I’ ’N’ ’F’ ’O’ ’R’ ’M’ ’A’ ’T’ ’I’ ’C’ ’A’ ’\0’

INDICI: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Unde:

 Spațiul total alocat este 15 byte


 Spațiu efectiv ocupat este 12 byte
 Spațiu liber este de 3 byte
 Primul caracter ocupă poziția 0
 Ultimul caracter din șir ocupă poziția 10
 Lungimea șirului este de 10 caractere
 Caracterul din poziția 11 este NULL, adică sfârșitul de șir

Citirea șirului
 Ca la vectori:
Se realizează citirea caracter cu caracter până la ’\0’ (NULL)
for(i=0;s[i];i++)
cin>>s[i];
s[i]=’\0’;
 ca o variabilă neindexata, folosind comanda cin:
cin>> sir_de_caractere;

citirea se termină la primul caracter spațiu sau <ENTER> întâlnit

 cin.get(sir, dimensiune), cin.get(sir, dimensiune, caracter de oprire), cin.get()


 cin.getline(sir, dmensiune)
Parcurgerea șirului
for(int i=0;s[i];i++)
….prelucreaza caraterul curent s[i]
Afișarea șirului
 caracter cu caracter prin parcurgere
for(int i=0;s[i];i++)
cout<<s[i];

 ca o variabilă neindexată, folosind comanda cout


cout<<s;

Setul II
1. Se dă un șir de 255 caractere, format din litere mici și spații, cuvintele sunt separate prin un
singur spațiu. Să se determine lungimea șirului.
2. Se dă un șir de 255 caractere, format din litere mici și spații, cuvintele sunt separate prin un
singur spațiu. Să se determine numărul de cuvinte
3. Se dă un șir de 255 caractere, format din litere mici și spații. Să se determine câte vocale din
șir sunt cuprinse între două consoane.
4. Se dă un sir de cel mult 20 caractere ce conține numai litere mici ale alfabetului englez. Să se
afișeze șirul obținut prin înlocuirea fiecărei vocale cu litera mare corespunzătoare.
5. Se dă un sir de caractere reprezentând o propoziție formată din litere mici ale alfabetului
englez și spații. Transformați șirul dat astfel încât prima și ultima literă a fiecărui cuvânt să fie
înlocuite cu litera mare corespunzătoare.
6. Se consideră fișierul prosir.in care conține pe primul rând un text format din cel mult 199 de
caractere litere mici și spații. Cuvintele din text sunt separate prin unul sau mai multe spații.
Să se modifice textul citit din fișier prin înlocuirea ultimei litere a fiecărui cuvânt cu cifra 5.
De pe site-ul pbinfo.ro rezolvați următoarele probleme:
#1456, #890, #13, #84

S-ar putea să vă placă și