Documente Academic
Documente Profesional
Documente Cultură
Siruri de caractere
Un sir de caractere este o succesiune de caractere memorata intr-un tablou
unidimensional de tip char. Fiecare octet al tabloului memoreaza codul
ASCII al caracterului respective. Sfarsitul sirului este marcat prin caracterul
NULL sau 0.
1. Declararea si memorarea vectorilor de caractere
Char cuvant[15];
2. Initializarea sirurilor de caractere
Char cuvant[ ]=”programator”;
Sau
Char cuvant[15]=”programator”;
3. Citirea si afisarea sirurilor de caractere
# include <iostream.h>
# include <conio.h>
void main()
{char cuvant[15];
cout<<”cititi cuvantul:”;cin>>cuvant;
cout<<”cuvantul citit:”;cout<<cuvant;
}
cuvant[0]=’p’, cuvant[1]=’r’ e.t.c
OBS.
Cu ajutorul functiei cinnu putem citi siruri de caractere care contin spatii sau alte
caractere albe.
Pentru citirea sirurilor de caractere care contin cuvinte separate prin spatii sau
caractere albe vom folosi functia cin.get.
# include <iostream.h>
# include <conio.h>
void main()
{char sir[50];
cin.get(sir,40); //citeste max.40 de caractere sau se termina la <enter>
cout<<sir;
}
OBS.
In cazul citirii a doua siruri de caractere, in buffer-ul de citire se depune dupa
citirea primului sir, caracterul ‘\n’, datorita faptului ca s-a tastat <enter>. Citirea
celui de-al doilea sir se opreste pentru ca se preia ‘\n’ din buffer.
Apeland functia cin.get() aceasta va prelua caracterul ‘\n’ astfel eliminam acest
inconvenient, iar al doilea sir se va citi in mod normal.
# include <iostream.h>
# include <conio.h>
void main()
{char sir1[50],sir2[50];
cin.get(sir1,40);
cout<<sir1;
cin.get();
cin.get(sir2,40);
cout<<sir2;
}
4. Functii care opereaza cu siruri de caractere
a) Determinarea lungimii unui sir de caractere
Cout<<strlen(sir);
b) Copierea unui sir intr-un alt sir
Strcpy(sir1,sir2);
Cout<<sir1;
c) Concatenarea a doua siruri
Strcat(sir1,sir2);
Cout<<sir1;
Strncat(sir1,sir2,3); //concateneaza 3 caractere din sir2 la sir1
Cout<<sir1;
d) Compararea a doua siruri
K=strcmp(sir1,sir2)
If (k<0) cout<<”sir1<sir2”
If (k>0) cout<<”sir1>sir2”;
If (k==0) cout<<”sir1=sir2”;
K=stricmp(sir1,sir2);//are acelasi rol cu strcmp cu diferenta ca nu
face distinctie intre literele mari si mici.
e) Cautarea unui character intr-un sir
Cout<<strchr(sir,character); //intoarce subsirul care incepe cu prima
aparitie a caracterului citit de la
dreapta la stanga
*t=strchr(sir,character)
cout<<t-sir; //intoarce indicele primei aparitii a unui
character intr-un sir
Cout<<strrchr(sir,character); //intoarce subsirul care incepe cu prima
aparitie a caracterului citit
Test
1. Initializand sirul de caractere astfel:
Char sir[]=”autor”;
Cati octeti contine zona de memorie alocata?
a) 5 b) 6 c) 4
2. Initializand sirul de caractere astfel:
char sir[20]=”autor”;
Cati octeti contine zona de memorie alocata?
a) 21 b) 20 c) 5
3. Ce va afisa urmatoarea secventa de program daca la citire se introduce
textul:”calculatorul meu este performant”?
char sir[16];
cin>>sir;
cout<<sir;
a) calculatorul meu este performant
b) calculatorul
c) calculatorul meu
4. Ce va afisa urmatoarea secventa de program daca la citire se introduce textul:
“calculatorul meu este performant”?
char sir[50];
cin.get(sir,17);
cout<<sir;
a) calculatorul meu este performant
b) calculatorul
c) calculatorul meu
5. Ce va afisa secventa de mai jos?
Char sir1[]=”floare-“,sir2[]=”gradinarit”;
Strncat(sir1,sir2,7);
Cout<<sir1;
a) floare-gradinarit b) floare-gradinar c) floare-gradina
Tema
Se citeste un text. Sa se afiseze cuvintele din text care contin cel putin 3 vocale.
Cin.get(v,201);
Cin.get();
N=strlen(v);
I=0;
Repeat
J=0;k=0;
Repeat
A[j]=v[i]
Daca (a[j]=’a’ || a[j]=’e’------
K++;
I++;j++
Cat timp (v[i-1]!=’ ‘
A[j]=0
Daca k<=3 atunci
Scrie a
Cat timp i<n
Probleme propuse
1) Sa se insereze pe pozitia p a unui sir un alt sir dat.
2) Sa se steargea dintr-un sir dat n caractere, incepand cu pozitia p
3) Se citeste un text care contine cuvinte separate prin spatii. Sa se elimine spatiile
din text.
4) Numarati aparitiile fiecarei litere intr-un text .
5) Numarati aparitiile unui cuvant intr-un text.
1.