Sunteți pe pagina 1din 17

Siruri de caractere

Salut! Eu sunt Mimo si azi vreau sa iti arat


cum poti folosi litere si alte simboluri in
programul tau in C++

Ana are mere bune si dulci…

...Program finished with exit code 0


Press ENTER to exit console.

caracter = litera, simbol sau numere atunci cand nu


ne referim la valoarea lor ci doar la reprezentarea
grafica

Pentru inceput trebuie sa sti ca in orice sistem de


calcul, datele – de orice tip – se memoreazasub
formade numere. Mai mult, acestea se reprezintain
baza 2. In consecinta, pentru a memora in
calculator caractere este necesarautilizarea unei
reprezentari a caracterelor prin numere. O astfel de
**Codul ASCII standard codifica caracterele folosind 7 biti, astfel ca permite
codificarea a 27=128 caractere. Nu sunt prea multe! De fapt sunt codificate
numai literele din alfabetul englez, cifrele de la 0 la 9, semnele de punctuatie si
operatorii, precum si alte simboluri. Lipsesc cu desavârsire literele specifice
altor alfabete latine (asa numite litere cu diacritice)

**Prin codul ASCII, fiecarui caractere reprezentat in acest cod i se asociaza


un numar. Aceste numere (numite chiar coduri ASCII) se gasesc in
intervalul 0 .. 127

Observatii utile

 literele mari si literele mici sunt diferite – au


coduri ASCII diferite
 codurile ASCII ale literelor mari (sau mici) sunt in
ordine: 'A' are codul 65, 'B' are codul 66, .. , 'Z' are
codul 90. Doua caractere consecutive in alfabet au
coduri ASCII consecutive! De asemenea, litera 'a' are
codul 97, etc.
 codurile ASCII ale literelor mici sunt mai mari decât
codurile ASCII ale literelor mari ('a' > 'Z') si diferenta
intre codurile ASCII a doua litere (mica – mare) este 32.
 cifrele au coduri consecutive: caracterul '0' are codul 48,
caracterul '1' are codul 49, etc. *Observam ca
caracterul '0' nu are codul ASCII 0, ci 48.
 caracterul spatiu este un caracter imprimabil. Spatiul are
codul ASCII 32.
 caracterul cu codul 0, numit si caracter nul, notat in C++ cu '\0' –
reprezinta finalul unui sir de caractere in memorie
 caracterul cu codul 10, numit Line Feed, notat in C++ cu '\n' – produce
trecerea la rând nou atunci când este afisat pe ecran sau intr-un fisie

Un șir de caractere este o


succesiune de caractere
cuprinsă între doua ghilimele și
poate să conțină litere mari și
mici, caractere speciale și
delimitatori.
Declarare:

Variabilele de tip sir de caractere pot primi valori prin atribuire sau
citire.

** La sfârsitul sirului, C++ memoreaza un caracter special: caracterul NULL,


care are rol de a marca sfârsitul constantei sir de caractere ‘\0’.

Afisarea unui sir de caractere


Se poate face cu operatorul << de insertie in stream:

Citirea unui sir de caractere


Se poate folosi operatorul >> de extractie din stream:

Pentru a citi siruri care contin spatii, putem folosi


metoda getline a obiectului cin sau alt obiect de tip istream:

Dar de unde sti ce metoda sa folosesti


pentru citire? E foarte simplu. Daca e
vorba sa citesti un singur cuvant poti
folosi citirea clasica . Daca ai
de gand sa citesti propozitii sau mai
**Functia cin preia caracterele pâna la intâlnirea caracterului spatiu, iar
functia gets pâna la intâlnirea caracterului enter. Functiile gets si puts isi au
prototipul in hederul <stdio.h>.

Operatii cu siruri de caractere


Compararea a doua siruri
Limbajul C++ foloseste standardul de codificare ASCII, conform caruia fiecarui
caracter i se asociaza un intreg cuprins intre [0,127].
‘A’ – ‘Z’ 65 - 90
‘a’ – ‘z’ 97 – 122
‘0’ – ‘9’ 48 – 57
Atunci când se compara doua caractere, se compara de fapt codurile lor ASCII.

Parcurgerea pe caractere a unui sir


Pentru a afla dimensiunea efectiva a unui sir de caractere folosim functia strlen,
care isi are prototipul in hederul <string.h>.
Se citeste de la tastatura un sir de caractere. Sa se tipareasca sirul obtinut
prin transformarea literelor mari in litere mici.

Pointeri
Declaratie:

Ce este p? Este un pointer la char,


adică o variabilă a că rei valoare este
adresa unei date de tip char
Functii pentru caractere
isalnum

Verifica daca un caracter este alfanumeric (cifra, litera mare, litera mica). Returneaza o
valoare diferita de zero daca parametrul este alfanumeric, 0 in caz contrar.

isalpha
Verifica daca un caracter este alfabetic (litera mare, litera mica). Returneaza o valoare
diferita de zero daca parametrul este alfabetic, 0 in caz contrar.

islower

Verifica daca un caracter este litera mica. Returneaza o valoare diferita de zero daca
parametrul este litera mica, 0 in caz contrar.

isupper

Verifica daca un caracter este litera mare. Returneaza o valoare diferita de zero daca
parametrul este litera mare, 0 in caz contrar.

isdigit

Verifica daca un caracter este cifra. Returneaza o valoare diferita de zero daca
parametrul este cifra, 0 in caz contrar.

tolower

Converteste parametrul la litera mica. Daca parametrul este litera mare, returneaza
valoarea convertita, in caz contrar returneaza valoarea initiala a parametrului.

toupper

Converteste parametrul la litera mare. Daca parametrul este litera mica, returneaza
valoarea convertita, in caz contrar returneaza valoarea initiala a parametrului.
Functii pentru siruri de caractere
strlen
Returneaza lungimea sirului, adica numarul de caractere din sirul al carui prim caracter
se afla la adresa memorata. Caracterul nul nu se numara.

Strcpy

Copiaza caracterele din sirul aflat la adresa src, inclusiv caracterul nul, in sirul al carui
prim element se afla la adresa din dest.

Functia returneaza adresa dest.


strncpy

Copiaza cel mult count caractere din sirul aflat la adresa src, in sirul al carui prim
element se afla la adresa din dest.

In sirul dest nu se va plasa caracterul nul dupa cele count caractere copiate.

Functia returneaza adresa dest.

strcat

Adauga (concateneaza) caracterele din sirul aflat la adresa src, inclusiv caracterul nul,
la sirul al carui prim element se afla la adresa din dest.

Functia returneaza adresa dest.


strchr

Cauta caracterul ch in sirul al carui prim caracter se afla in memorie la adresa din str.

Functia returneaza adresa NULL, daca caracterul ch nu apare in sirul str, respectiva


adresa primei aparitii al lui ch in str, daca ch apare in str.

strstr

Cauta sirul t in sirul al carui prim caracter se afla in memorie la adresa din s.

Functia returneaza adresa NULL, daca sirul t nu apare in sirul s, respectiva adresa


primei aparitii al lui t in s, daca t apare in s
strcmp

Compara lexicografic cele doua siruri de caractere:

 daca sirul s este lexicografi mai mic decât t functia va returna o valoare negativa


 daca sirul s este lexicografi mai mare decât t functia va returna o valoare pozitiva
 daca cele doua siruri sunt identice functia va returna valoarea 0

strtok

Functia strtok extrage dintr-un sir de caractere câte un subsir (cuvânt) delimitat de


caractere din sirul sep. Functia se apeleaza in doua moduri:

 primul apel are ca parametri sirul din care se face extragerea si sirul separatorilor
 la urmatoarele apeluri primul parametru este NULL.

Rezultatul functiei strtok este adresa de inceput a subsirului curent extras,


sau NULL daca nu se mai poate extrage niciun subsir din sirul dat.

Secventa de mai jos extrage dintr-un sir s cuvintele (separate prin caractere din
multimea {' ', ',', '.'}) si le afiseaza pe linii diferite. Sirul s se presupune declarat
si citit.
Eliminarea si inserarea unui
caracter intr-un sir
Acestea sunt operatii frecvente si pot fi realizate cu ajutorul functiei strcpy.
Deoarece comportamentul functiei strcpy este impredictibil daca parametri se
suprapun, este necesara utilizarea unui sir suplimentar.

Eliminarea unui caracter dintr-un sir


Urmatoarea secventa elimina din sirul s (presupus citit) caracterul de pozitia x.

Inserarea unui caracter intr-un sir


Urmatoarea secventa insereaza in sirul s (presupus citit) de pozitia x caracterul 'A'
Problema rezolvata:
Se da un sir de caractere reprezentând o propozitie formata din litere mici ale alfabetului
englez si spatii.

Cerinta
Determinati numarul de perechi de vocale consecutive din propozitie.

Date de intrare
Programul citeste de la tastatura propozitia data.

Date de iesire
Programul afiseaza pe ecran numarul de perechi de vocale consecutive.

Restrictii si precizari
 sirul de caractere citit contine cel mult 255 de caractere
 se considera vocale caracterele din multimea {a,e,i,o,u}
Joc de consolidare a cunostintelor
https://wordwall.net/ro/resource/15278124/functii-
pentru-operatii-cu-siruri-de-caractere-c
Bibliografie:
https://www.pbinfo.ro/articole/19/siruri-de-
caractere-in-cpp

https://programareliceu.wordpress.com/materiale-
informatica/lectii/siruri-de-caractere/

https://profs.info.uaic.ro/~infogim/2017/lectii/78/
783_stringuri.pdf
https://infoliceu.webnode.page/clasa-a-xi-a-
c/siruri-de-caractere/functii-pentru-siruri-de-
caractere/

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