a IX-a A1 lecții INFORMATICĂ | 7 lecții T.I.C.
Informatică
█
Lectia 00
T.I.C.

█
Lectia 01   |   Lectia 02   |   Lectia 03   |   Lectia 04
█
Lectia 05   |   Lectia 06   |   Lectia 07
a IX-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a IX-a C0 lecții INFORMATICĂ | 3 lecții T.I.C.
T.I.C.
█
Lectia 01   |   Lectia 02   |   Lectia 03
a IX-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a IX-a E0 lecții INFORMATICĂ | 0 lecții T.I.C.
a X-a A0 lecții INFORMATICĂ | 2 lecții T.I.C.
T.I.C.
█
Lectia 07   |   Lectia 08
a X-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a X-a C0 lecții INFORMATICĂ | 0 lecții T.I.C.
a X-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a A2 lecții INFORMATICĂ | 0 lecții T.I.C.
Informatică
█
Lectia 16
Lectia 16 --- [ Teorie + 2 Probleme rezolvate ]

ȘIRURI DE CARACTERE

Un tablou de caractere reprezintă o succesiune de caractere - orice caractere de pe tastatură (literă mare, literă mică, cifre, operatori aritmetici, caractere speciale).

Un șir de caractere este un tablou de caractere care are la sfârșit caracterul NULL ('\0').

'\n' - caracterul linie noua     deci cout<<endl;    echivalent cu  cout<<'\n';

          Un șir de caractere se reprezintă între ghilimele ("șir") iar un caracter între apostrofuri {'a').

Declararea unui șir de caractere:

char vect[20];

char vect[11]=”calculator”;

char vect[]=”calculator”; (compilatorul face calculul numarului de octeti necesari)

char vect[100]=”calculator”; (s-au rezervat mai multi octeti decat era necesar)

1               Sirurile de caractere sunt de fapt tablouri de caractere, care au ca ultim element un terminator de sir, caracterul NULL.

                    char tc[5] = {’a’, ’b’, ’c’, ’d’, ’e’};     / / tablou de caractere

char sc[5] = {’a’, ’b’, ’c’, ’d’, ’\0’};    // sir de caractere cu elementele abcd Ultima initializare este echivalenta cu:


  AFISAREA SIRURILOR DE C A RACTERE

                        cout<<vect;   // În cazul în care are terminatorul de sir la final.

                        for(int i=0;i<=9;i++)

cout <<vect[i];   // calculator


Exemplu:

char tc[5] = {’a’, ’b’, ’c’, ’d’, ’e’};     // tablou de caractere

char sc[5] = {’a’, ’b’, ’c’, ’d’, ’\0’};    / / sir de caractere cu elementele abcd Ultima initializare este echivalenta cu:

char sc[5] = ”abcd”;      //sau char sc[] = ”abcd”; char sc1[5] = ”abcd”;

char s[10];

cout<<sc<<endln;    //afiseaza abcd
cout<<tc<<endl;     //eroare: tabloul de caractere nu contine terminatorul de sir, deci nu poate fi afisat ca sir
cout<<s<<endl;         // eroare: tablou neinitializat 
cout<<sc1[0];        // afiseaza primul  caracter din  sirul sc1 
cout<<sc1[2];       / / afiseaza al treilea element din sirul  sc1
sc1[1]=’K’;             // elementului din sir de indice 1 i se atribuie valoarea „K‟;

CITIREA / AFISAREA SIRURILOR DE CARACTERE

Sirurile de caractere pot fi initializate inca de la declarare sau citite pe parcursul programului.

a.          Citirea unui sir de caractere se poate face ca citirea oricarui tablou, intr-un for, caracter cu caracter

(desi nu este recomandata). In acest caz, terminatorul de sir nu este memorat automat, el trebuie pus explicit dupa ultimul caracter din sir.

 

Exemplu:

char c[20];

for(int i=0;i<=5;i++)

cin>>c[i];

cout<<c<<endl; //se va afisa sirul format din cele 6 caractere, urmat de caractere „reziduale”,

//initializate implicit la compilare, din cauza ca n-a fost pus terminatorul de sir

c[6]='\0';

cout<<c<<endl; //a fost pus terminatorul de sir, deci sirul va fi afisat corect

  b.      Se poate face pur si simplu, folosind cin>>. Caracterul nul este adaugat automat. Dezavantajul este ca in acest fel nu se pot citi siruri care contin mai multe cuvinte separate prin spatii. Citirea sirului se sfarseste la intalnirea primului caracter blank (de ex, daca se citeste “ora de informatica”, variabila c va retine numai “ora”).

Exemplu char c[30]; cin>>c; cout<<c;

  c.    Se poate folosi o functie speciala pentru citirea sirurilor de caractere, inclusa in biblioteca string.h (varianta recomandata).

Exemplu

char a[30],x;int  nr;             cin.get(a, nr, x );

Functia cin.get citeste un sir de caractere sau pana cand au fost citite nr-1 caractere, sau daca s-a

intalnit caracterul x. Al treilea parametru poate lipsi, caz in care el este implicit caracterul ‟\n‟ (new line). Sunt citite si caracterele albe, caracterul NULL este inserat automat iar caracterul transmis ca ultim parametru nu este inserat in sir.

E xemplu

char a[30];

cin.get(a,5,’s’);         //daca se citeste sirul “maimuta, variabila a va retine  “maim” 

cin.get(a,15,’s’);  //daca se citeste sirul “maimuta, variabila a va retine  “maimuta” 

cin.get(a,15,’t’);   //daca se citeste sirul “maimuta, variabila a va retine  “maimu”

2                   cin.get(a,4,’t’);         //daca se citeste sirul “maimuta, variabila a va retine  “mai”

cin.get(a,10);      //daca se citeste sirul “maimuta, variabila a va retine  “maimuta”

                   Functia cin.get( ) fara parametri are rolul de a citi un caracter (alb sau nu).

 

Observatie : In cazul utilizarii repetate a functiei cin.get(a,nr,x), dupa fiecare folosire trebuie citit caracterul de la sfarsitul fiecarui sir , adica ‟\n‟ (in caz contrar, acest caracter va fi incarcat la inceputul urmatorului sir, a carui citire se termina la caracterul Enter, deci citirea celui de-al doilea sir se termina inainte de a incepe, iar al doilea sir va fi sirul vid). Aceasta citire a caracterului ‟\n‟ se realizeaza folosind cin.get() fara parametri.

 

Exemplu

char a[30],b[30];

cin.get(a,15);

cin.get(b,10);

Daca se incearca citirea sirurilor „sarbatoare” si „vacanta”, se observa ca a=”sarbatoare”, b=””

(nici nu apucam sa citim sirul b). Varianta corecta este:

cin.get(a,15);

cin.get();

cin.get(b,10);

 

Afisarea unui sir de caractere se face folosind cout.

                                                     cout<<a;

Se poate afisa si caracter cu caracter, ca in cazul tablourilor, dar aceasta varianta nu este recomandata.

1. Sa se scrie un program C++ care citeste un sir de caractere care poate sa contina inclusiv spatii. Sa se numere cate litere mari, cate litere mici si cate cifre contine sirul.
Propune o soluție

S
o
l
u
ț
i
a:
Introdu următorul text: 102386627
2. Sa se scrie un program C++ care citeste un cuvant de maxim 30 de caractere. Sa se afiseze toate cuvintele care se obtin din eliminarea unui caracter din cuvant.
Propune o soluție

S
o
l
u
ț
i
a:
Introdu următorul text: 652113017

Fii primul care comentează lecţia
     Submit
  |   Lectia 20
a XI-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a C0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a E0 lecții INFORMATICĂ | 1 lecții T.I.C.
T.I.C.
█
Fişa 01
a XII-a A2 lecții INFORMATICĂ | 6 lecții T.I.C.
Informatică
█
Lectia 01   |   Lectia 02
T.I.C.

█
Fişa 01   |   Fişa 02   |   Fişa 03   |   Fişa 04   |   Fişa 05   |   Fişa 06
a XII-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XII-a C0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XII-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XII-a E0 lecții INFORMATICĂ | 0 lecții T.I.C.
Excelenta A0 lecții INFORMATICĂ | 0 lecții T.I.C.