Sunteți pe pagina 1din 41

Tipuri structurate de date

i rur i

de

carac t ere

Sumar 1. Competene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Prezentare general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Declararea irurilor de caractere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4. Citirea i scrierea irurilor de caractere . . . . . . . . . . . . . . . . . . . . . . . 10 5. Prelucrarea irurilor de caractere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6. Aplicaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7. Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

1. Competene Competene generale identificarea datelor care intervin ntr-o problem i a relaiilor dintre acestea elaborarea algoritmilor de rezolvare a problemelor
Competene specifice evidenierea necesitii structurrii datelor prelucrarea datelor structurate alegerea structurii de date adecvat rezolvrii unei probleme prelucrarea datelor structurate

2. Prezentare general Un ir de catactere: - este un tablou unidimensional (vector) de caractere; - reprezint o succesiune de caractere cuprins ntre ghilimele i terminat cu caracterul NULL notat \0; - conine orice tip de caracter: liter mic, lier mare, cifr, caracter special, delimitator, fiecare caracter fiind reprezentat prin codul su ASCII.
Un ir de caractere este o structur de date care este format dintr-o mulime ordonat de caractere, n care fiecare caracter se identific prin poziia sa n cadrul mulimii. Exemplu: irul de caractere Limbajul C++ se poate reprezenta astfel:
L i m b a j u l C + + \0

Prezentare general Fiecare caracter din setul de caractere al limbajului C++ se caracterizeaz printr-un cod unic, numit codul ASCII al caracterului, un numr ntreg ntre 0 i 255. n cadrul setului ASCII, codurile caracterelor sunt dup cum urmeaz: - literele mari ncepnd cu 65 (A - 65, B - 66, C - 67, ..., Z - 90); - literele mici ncepnd cu 97 (a 97, b 98, c 99, ..., z - 122); - cifrele ncepnd cu 48 (0 48, 1 49, 2 50, ..., 9 - 57).
Observaie: Diferena ntre codul ASCII al oricrei litere mici i codul literei mari pereche este aceeai, 32. Exemplu: char c1,c2; int x; c1='A'; x=c1+32; //conversie implicit c2=x; //conversie implicit cout<<c1<<endl<<c2<<endl<<x;
5

3. Declararea irurilor de caractere Declararea irurilor de caractere: - vectorul de caractere trebuie declarat cu un caracter mai mult (caracterul NULL) dect cel mai mare ir pe care l poate conine; - un ir de caractere poate fi definit ca un vector de caractere, n dou moduri: char nume[dimensiune]; char *nume; unde nume este identificatorul variabilei de tip ir de caractere, iar dimensiune reprezint numrul maxim de caractere ce pot fi memorate n ir (inclusiv caracterul NULL);
char nume[dimensiune]; // se declar un vector cu elemente de tip caracter;

char *nume; // se declar un pointer ctre tipul caracter;


Observaie: caracterele irului vor ocupa poziii consecutive n vector, ncepnd cu poziia 0
6

Declararea irurilor de caractere Exemplul 1: char sir[20];


- se declar un ir de caractere n care vor putea fi memorate maxim 19 caractere; - dac variabila sir reine sirul informatica, reprezentarea n memoria intern este urmtoarea:
sir i
0

n
1

f
2

o
3

r
4

m
5

a
6

t
7

i
8

c
9

a
10

\0
11

\0
12

\0
13

\0
14

\0
15

\0
16

\0
17

\0
18

\0
19

unde: sir[0]=i sir[1]=n sir[2]=f sir[10]=a - caracterul NULL (\0) este adugat automat de ctre compilator; - lungimea irului de caractere este dat de numrul de caractere (n exemplu este de 11);
7

Declararea irurilor de caractere Exemplul 2: char s[5];


- se declar un ir de caractere n care vor putea fi memorate maxim 4 caractere; - dac variabila s reine sirul algoritm, reprezentarea n memoria intern este urmtoarea:
s a
0

l
1

g
2

o
3

\0
4

Declararea irurilor de caractere Exemplul 3: char a[15]=calculator;


- se declar un ir de caractere n care vor putea fi memorate maxim 14 caractere; - irul de caractere a a fost iniializat la declararea lui, iar reprezentarea n memoria intern este urmtoarea:
a c
0

a
1

l
2

c
3

u
4

l
5

a
6

t
7

o
8

r
9

\0
10

\0
11

\0
12

\0
13

\0
14

-dac se iniializeaz irul de caractere, nu mai este nevoie s se precizeze lungimea maxim a irului, aceasta fiind calculat de ctre compilator: char a[]=calculator;

4. Citirea i scrierea irurilor de caractere


Citirea irurilor de caractere Citirea se face folosind instruciunea cin n dou moduri: - la nivel de caracter; - la nivelul irului de caractere. a. Citirea la nivel de caracter (caracter cu caracter) char sir[10]; int i,n; cout<<numarul de caractere:; cin>>n; for(i=0;i<n;i++) cin>>sir[i]; - dac citirea irului de caractere se face caracter cu caracter trebuie adugat caracterul NULL la sfritul irului de caractere.

10

Citirea i scrierea irurilor de caractere


b. Citirea la nivelul irului de caractere char sir[10]; cin>>sir; - n acest caz caracterul NULL este adugat automat de ctre compilator; - operaia de citire de la tastatur se termin atunci cnd a fost introdus un caracter alb (spaiu sau CR); - pentru a citi caracterul spaiu se folosete funcia get care are dou forme.

11

Citirea i scrierea irurilor de caractere


Forma 1: cin.get(sir,nr,ch); unde: sir este o variabil de tip ir de caractere care se va citi; nr este o variabil de tip ntreg i reprezint numrul maxim de caractere care vor fi citite, inclusiv caracterul NULL; ch este o variabil de tip caracter care reprezint caracterul care ncheie citirea irului; - dac al treilea parametru lipsete, se consider implicit caracterul \n generat de tasta Enter.

Forma 2: cin.get();
- folosit dup o fucie cin.get() cu parametri pentru a descrca din fluxul de date ultimul caracter citit, care ar mpiedica efectuarea unei a doua operaii de citire de la tastatur.
12

Citirea i scrierea irurilor de caractere


Exemplul 1: char s1[10]; cin>>s1; //dac introducem textul informatica i tastm Enter se memoreaz n variabila s1 irul informati; Exemplul 2: char s2[10]; cin>>s2; //dac introducem textul informat i tastm Enter se memoreaz n variabila s2 irul informat;

Exemplul 3: char s3[10]; cin>>s3; //dac introducem textul info arena i tastm Enter se memoreaz n variabila s3 irul info;

13

Citirea i scrierea irurilor de caractere


Exemplul 4: char s4[10]; cin.get(s4,10); //dac introducem textul informatica i tastm Enter se memoreaz n variabila s4 irul informati; Exemplul 5: char s5[10]; cin.get(s5,5); //dac introducem textul informatica i tastm Enter se memoreaz n variabila s5 irul info;

Exemplul 6: char s6[10]; cin.get(s6,10); //dac introducem textul info arena i tastm Enter se memoreaz n variabila s6 irul info aren;

14

Citirea i scrierea irurilor de caractere


Exemplul 7: char s7[10]; cin.get(s7,10,$); //dac introducem textul informat$ i tastm Enter se memoreaz n variabila s7 irul informat; Exemplul 8: char s8[10]; cin.get(s8,10); //dac introducem textul info$arena i tastm Enter se memoreaz n variabila s8 irul info;

Exemplul 9: char s9[10]; cin.get(s9,9,\n); //dac introducem textul info arena$ i tastm Enter se memoreaz n variabila s9 irul info are;

15

Citirea i scrierea irurilor de caractere


Exemplul 10: char a[10], b[10]; cin.get(a,10); cin.get(b,10); //dac introducem textul info i tastm Enter se memoreaz n variabila a irul info i nu va putea fi citit al doilea ir; Exemplul 11: char a[10], b[10]; cin.get(a,10); cin.get(); cin.get(b,10); //dac introducem textul info i tastm Enter i apoi introducem irul arena i tastm Enter se memoreaz n variabila a irul info i n variabila b irul arena;

16

Citirea i scrierea irurilor de caractere


Exemplul 12: char a[10], b[10]; cin.get(a,10); cin.get(b,10); //dac introducem textul info arena i tastm Enter se memoreaz n variabila a irul info aren i n variabila b irul a;

17

Citirea i scrierea irurilor de caractere


Scrierea irurilor de caractere Scrierea se face folosind instruciunea cout n dou moduri: - la nivel de caracter; - la nivelul irului de caractere. a. Scrierea la nivel de caracter (caracter cu caracter) char sir[10]; int i; cin>>sir; i=0; while(sir[i]!=NULL) { cout<<sir[i]; i++; }

18

Citirea i scrierea irurilor de caractere


b. Scrierea la nivelul irului de caractere char sir[10]; cin>>sir; cout<<sir;

19

Citirea i scrierea irurilor de caractere Exemplul 1: char s1[10]; cin>>s1; cout<<s1; //dac introducem textul informat i tastm Enter se afieaz irul informat; Exemplul 2: char s2[10]; cin>>s2; cout<<s2+2; //dac introducem textul informat i tastm Enter se afieaz irul format; Exemplul 3: char s3[10]; cin>>s3; cout<<s3; //dac introducem textul info arena i tastm Enter se afieaz irul info;
20

5. Prelucrarea irurilor de caractere


Funcii care lucreaz cu iruri de caractere 1. 2. 3. 4. 5. 6. 7. 8. 9. STRLEN STRCPY STRNCPY STRCAT STRNCAT STRCMP STRNCMP STRICMP STRSET 10.STRNSET 11.STRLWR 12.STRUPR 13.TOUPPER 14.TOLOWER 15.STRCHR 16.STRRCHR 17.STRSTR 18.STRREV

21

Prelucrarea irurilor de caractere


1. Funcia STRLEN Returneaz lungimea irului. strlen(sir) unde sir este o variabil de tip ir de caractere. Exemplu: char s[21]; int n; cin>>s; n=strlen(s); cout<<n;

Dac se citete n variabila s irul informatica se afieaz valoarea 11.


Care este efectul apelului: cout<<strlen("programare"); ?

22

Prelucrarea irurilor de caractere


2. Funcia STRCPY Copie un ir de caractere n alt ir de caractere. strcpy(sir1,sir2) unde sir1 i sir2 sunt dou variabile de tip ir de caractere. Exemplu: char a[21],b[21]; cin>>a; strcpy(b,a); cout<<b; Dac se citete n variabila a irul informatica se afieaz irul informatica. Care este efectul apelului: strcpy(b,a+2); ?

23

Prelucrarea irurilor de caractere


3. Funcia STRNCPY Copie un numr de caractere specificat, dintr-un ir de caractere n alt ir de caractere. strncpy(sir1,sir2,nr) unde sir1 i sir2 sunt dou variabile de tip ir de caractere, iar nr este o variabil de tip ntreg. Exemplu: char a[21],b[21]; cin>>a; strncpy(b,a,4); b[4]=NULL; cout<<b; Dac se citete n variabila a irul informatica se afieaz irul info. Care este efectul apelului: strncpy(b,a+2,3); ?

24

Prelucrarea irurilor de caractere


4. Funcia STRCAT Concateneaz dou iruri de caractere. strcat(sir1,sir2) unde sir1 i sir2 sunt dou variabile de tip ir de caractere. Exemplu: char a[21],b[21]; cin>>a>>b; strcat(a,b); cout<<a; Dac se citete n variabila a irul info i n variabila b irul arena se afieaz irul infoarena. Care este efectul apelurilor: strcat(a," "); strcat(a,b); ?

25

Prelucrarea irurilor de caractere


5. Funcia STRNCAT Concateneaz dou iruri de caractere. strncat(sir1,sir2,nr) unde sir1 i sir2 sunt dou variabile de tip ir de caractere, iar nr este o variabil de tip ntreg. Exemplu: char a[21],b[21]; cin>>a>>b; strncat(a,b,3); cout<<a;

Dac se citete n variabila a irul info i n variabila b irul arena se afieaz irul infoare.
Care este efectul apelului: strncat(a,b+0,3); ?

26

Prelucrarea irurilor de caractere


6. Funcia STRCMP Compar dou iruri de caractere. strcmp(sir1,sir2) unde sir1 i sir2 sunt dou variabile de tip ir de caractere. Exemplu: char a[21],b[21]; cin>>a>>b; cout<<strcmp(a,b);

Dac se citete n variabila a irul info i n variabila b irul intro se afieaz valoarea -1.
Care este efectul apelului: cout<<strcmp(intro,a);?

27

Prelucrarea irurilor de caractere


7. Funcia STRNCMP Compar un numr de caractere specificat din dou iruri de caractere. strncmp(sir1,sir2,nr) unde sir1 i sir2 sunt dou variabile de tip ir de caractere, iar nr este o variabil de tip ntreg. Exemplu: char a[21],b[21]; cin>>a>>b; cout<<strncmp(a,b,3); Dac se citete n variabila a irul info i n variabila b irul intro se afieaz valoarea -14. Care este efectul apelului: cout<<strncmp(a,intro,2); ?

28

Prelucrarea irurilor de caractere


8. Funcia STRICMP Compar dou iruri de caractere fr a face diferena ntre litere mici i litere mari. stricmp(sir1,sir2) unde sir1 i sir2 sunt dou variabile de tip ir de caractere. Exemplu: char a[21],b[21]; cin>>a>>b; cout<<stricmp(a,b); Dac se citete n variabila a irul arena i n variabila b irul are se afieaz valoarea 1. Care este efectul apelului: cout<<strncmp(are, arena); ?

29

Prelucrarea irurilor de caractere


9. Funcia STRSET Iniializeaz un ir de caractere cu acelai caracter. strset(sir,ch) unde sir este o variabil de tip ir de caractere, iar ch este o variabil de tip caracter. Exemplu: char a[21],x; cin>>a>>x; strset(a,x); cout<<a;

Dac se citete n variabila a irul info i n variabila x caracterul 1 se afieaz irul 1111.
Care este efectul apelului: strset(a,'#'); ?

30

Prelucrarea irurilor de caractere


10. Funcia STRNSET Iniializeaz ntr-un ir de caractere, primele nr caractere, cu caracterul ch. strnset(sir,ch,nr) unde sir este o variabil de tip ir de caractere, ch este o variabil de tip caracter, iar nr este o variabil de tip ntreg. Exemplu: char a[21],x; int n=2; cin>>a>>x; strnset(a,x,n); cout<<a; Dac se citete n variabila a irul info i n variabila x caracterul 1 se afieaz irul 11fo.

Care este efectul apelului: strnset(a,'&',1); ?


31

Prelucrarea irurilor de caractere


11. Funcia STRLWR Transform literele mari n litere mici. strlwr(sir) unde sir este o variabil de tip ir de caractere. Exemplu: char a[21]; cin>>a; strlwr(a); cout<<a; Dac se citete n variabila a irul iNFo se afieaz irul info.

32

Prelucrarea irurilor de caractere


12. Funcia STRUPR Transform literele mici n litere mari. strupr(sir) unde sir este o variabil de tip ir de caractere. Exemplu: char a[21]; cin>>a; strupr(a); cout<<a; Dac se citete n variabila a irul info se afieaz irul INFO.

33

Prelucrarea irurilor de caractere 13. Funcia TOLOWER Transform o liter mare n liter mic. tolower(ch) unde ch este o variabil de tip caracter. Exemplu: char c; cin>>c; c=tolower(c); cout<<c;
Dac se citete n variabila c caracterul N se afieaz irul n. Care este efectul apelului: c=tolower('A');cout<<c; ?

34

Prelucrarea irurilor de caractere


14. Funcia TOUPPER Transform o liter mic n liter mare. toupper(ch) unde ch este o variabil de tip caracter. Exemplu: char c; cin>>c; c=toupper(c); cout<<c; Dac se citete n variabila c caracterul b se afieaz irul B. Care este efectul apelului: c=toupper('h');cout<<c; ?

35

Prelucrarea irurilor de caractere


15. Funcia STRCHR Caut prima apariie a ununi caracter ntr-un ir de caractere. strchr(sir,ch) unde sir este o variabil de tip sir de caractere, iar ch este o variabil de tip caracter. Exemplu: char a[21],c; cin>>a>>c; cout<<strchr(a,c); Dac se citete n variabila a irul info i n variabila c caracterul f se afieaz irul fo. Care este efectul apelului: cout<<strchr("arena",'a'); ?

36

Prelucrarea irurilor de caractere


16. Funcia STRRCHR Caut ultima apariie a ununi caracter ntr-un ir de caractere. strrchr(sir,ch) unde sir este o variabil de tip sir de caractere, iar ch este o variabil de tip caracter. Exemplu: char a[21],c; cin>>a>>c; cout<<strrchr(a,c); Dac se citete n variabila a irul informatica i n variabila c caracterul i se afieaz irul ica. Care este efectul apelului: cout<<strrchr("info",'f'); ?

37

Prelucrarea irurilor de caractere


17. Funcia STRSTR Caut un subir ntr-un ir de caractere. strstr(sir1,sir2) unde sir1 i sir2 sunt dou variabile de tip ir de caractere. Exemplu: char a[21],b[21]; cin>>a>>b; cout<<strstr(a,b);

Dac se citete n variabila a irul informatica i n variabila b irul fo se afieaz irul formatica.
Care este efectul apelului: cout<<strstr("arena","a"); ?

38

Prelucrarea irurilor de caractere


18. Funcia STRREV Caut un subir ntr-un ir de caractere. strrev(sir) unde sir este o variabill de tip ir de caractere. Exemplu: char a[21]; cin>>a; strrev(a); cout<<a; Dac se citete n variabila a irul info se afieaz irul ofni.

39

6. Aplicaii
Fi de lucru: Aplicaii iruri de caractere

40

7. Bibliografie 1. Miloescu M., Informatic manual pentru clasa a X-a, Editura Didactic i Pedagogic, Bucureti, 2005 2. Munteanu F., Programarea calculatoarelor - manual pentru licee de informatic clasele X-XII, Editura Didactic i Pedagogic, Bucureti, 1994 3. Logoftu D., Bazele programrii n C++, Editura Polirom, Iai, 2006 4. Popescu C., Culegere de probleme de informatic, Editura DonarisInfo, Sibiu, 2002

41

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