Sunteți pe pagina 1din 6

Tablouri

Unitatea de învăţare nr. 12

TABLOURI

Cuprins Pagina

Obiectivele unităţii de învăţare nr. 12 2

11.1 Tablouri bidimensionale (matrici) 2

11.2 Operații cu matrici 2

11.3. Exemple de probleme cu matrici 4

Test de autoevaluare 8

Lucrare de verificare – unitatea de învăţare nr. 12 8

Răspunsuri şi comentarii la întrebările din testele de autoevaluare 9

Recapitulare 10

Bibliografie – unitatea de învăţare nr. 12 10

1
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Tablouri

OBIECTIVELE unităţii de învăţare nr. 12

Principalele obiective ale Unităţii de învăţare nr. 12


sunt:

 Înţelegerea organizării datelor în matrici


 Familiarizarea cu tablourile bidimensionale
 Modelarea datelor de prelucrat pe principiul
utilizării tablourilor bidimensionale
 Implementarea cu succes a problemelor care
utilizează matrici

12.1. ŞIRURI DE CARACTERE

Şirurile de caractere sunt tablouri de caractere, care au ca ultim element un


terminator de şir, caracterul null (zero ASCII), ’\0’.
Exemplu:
char tc[5] = {’a’, ’b’, ’c’, ’d’, ’e’}; // tablou de caractere
char sc[5] = {’a’, ’b’, ’c’, ’d’, ’\0’}; // şirul de caractere cu elementele abcd
Limbajul C/C++ permite iniţializarea unui tablou de caractere printr-o
constantă şir (şir între ghilimele), care include automat caracterul null. Deci ultima
iniţializare este echivalentă cu:
char sc[5] = ”abcd”; //sau cu
char sc[] = ”abcd”;

Exemplu:
char tc[5] = {’a’, ’b’, ’c’, ’d’, ’e’};
char sc[5] = {’a’, ’b’, ’c’, ’d’, ’\0’};
char sc1[5] = ”abcd”;
char s[10];
cout<<sc<<’\n’; //afişează abcd
cout<<tc<<’\n’;
//eroare: tabloul de caractere nu conţine terminatorul de şir, deci nu poate fi
afişat ca şir
cout<<s<<’\n’; // eroare: tablou neiniţializat
cout<<sc1[2]; // afişează al treilea element din şirul sc1
sc1[1]=’K’; // elementului din şir de indice 1 i se atribuie valoarea ‘K’;

2
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Tablouri

12.2. FUNCŢII PENTRU OPERAŢII CU ŞIRURI DE CARACTERE

Nr. Efect
Funcţia
Crt.
Citeşte caractere de la tastatură şi le înscrie în şirul s, până
1 gets(s); întâlneşte caracterul ’\n’. Acest caracterul nu este înscris în
s, dar se adaugă terminatorul ’\0’.
2 puts(s); Afişează şirul s pe ecran şi trece la linie nouă.
3 strcpy(s1, s2); Copiază şirul s2 în şirul s1.
Copiază primele n caractere din şirul s2 în şirul s1 (pe
4 strncpy(s1, s2, n);
poziţia n, trebuie adăugat după copiere terminatorul ’\0’.
5 strcat(s1, s2); Adaugă şirul s2 la sfârşitul şirului s1.
Adaugă cel mult n caractere din şirul s2 la sfârşitul şirului
6 strncat(s1, s2, n);
s1.
În şirul s, caracterele litere mici sunt înlocuite cu caractere
7 strupr(s);
litere mari.
În şirul s, caracterele litere mari sunt înlocuite cu caractere
8 strlwr(s);
litere mici.
Inversează toate caracterele şirului s, exceptând
9 strrev(s);
terminatorul’\0’.
10 strset(s,c); În şirul s, toate caracterele sunt înlocuite cu caracterul c.
În şirul s, primele n caracterele sunt înlocuite cu caracterul
11 strnset(s,c,n);
c. Operaţia se încheie, dacă este întâlnit terminatorul’\0’.
12 strlen(s); Returnează lungimea şirului s.
Compară succesiv codurile ASCII ale celor două şiruri.
Returnează valoarea 0 dacă sunt identice, o valoare pozitivă
13 strcmp(s1, s2); dacă s1[k]>s2[k]; o valoare negativă dacă s1[k]<s2[k], unde
k este indicele unde apare prima diferenţă între caracterele
şirurilor.
strcimp(s1, s2); sau Idem strcmp, fără a face deosebire între literele mari şi
14
strcmpi(s1, s2); mici.
Idem strcmp, dar compară numai primelor n caractere ale
15 strncmp(s1, s2,n);
celor două şiruri
Idem strcmp, dar compară numai primelor n caractere ale
strncmpi(s1, s2,n); sau
16 celor două şiruri, fără a face deosebire între literele mari şi
strnicmp(s1, s2,n);
mici.
Returnează un pointer la prima apariţie a caracterului c în
17 strchr(s, c);
şirul s. Când caracterul nu este găsit, se returnează NULL
Returnează un pointer la ultima apariţie a caracterului c în
18 strrchr(s, c);
şirul s. Când caracterul nu este găsit, se returnează NULL
Returnează un pointer la prima apariţie a şirului s2 în şirul
18 strstr(s1, s2);
s1. Când şirul s2 nu este găsit, se returnează NULL

3
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Tablouri

Exemplu:

#include <iostream.h>
#include <string.h>
void main()
{
char sir1[] = ”abcd”, sir2[] = ”abcde”, sir3 = "abcdef”, sir4 =
"de”;
cout<<strcmp(sir1, sir2)<<’\n’; // afişare: -101
// ’e’ = 101, ’a’ = 97, ’d’ = 100
//’0’ - ’e’ = -101
cout<<strcmp(sir2, sir1)<<’\n’; //afişare: 101
cout<<strcmp(sir1, "")<<’ '; //compararea variabilei sir1 cu constanta şir
vid
char str1[20]=”hello”;
char str2[20]=”goodbye”;
char str3[20];
int difer, lungime;
cout<<”str1=”<<str1<<” str2=”<<str2<<’\n’;
difer=strcmp(str1, str2);
if (difer == 0)
cout<<”Siruri echivalente!\n”;
else if (difer>0)
cout<<str1<<” mai mare (lexicografic) decât
“<<str2<<’\n’;
else
cout<<str1<<” mai mic (lexicografic) decât “<<str2<<’\n’;
cout<<”str1=”<<str1<<’\n’; cout<<”str3=”<<str3<<’\n’;
strcpy (str3, str1); cout<<”str1=”<<str1<<’\n’;
cout<<”str3=”<<str3<<’\n’;
strcat (str3, str1);
cout<<”str1=”<<str1<<’\n’;
cout<<”str3=”<<str3<<’\n’;
}

Test de autoevaluare 12

1. Se citeşte de la tastatură un şir s de caractere. Aflaţi lungimea acestuia.

2. Se citeşte de la tastatură un şir s de caractere şi un character c. Aflaţi dacă c


se găseşte în şirul s şi, în caz afirmativ, afişaţi poziţia pe care se află.

De exemplu, dacă s=”examen” şi c=”e”, programul va afişa ” 0 4”.

4
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Tablouri

Lucrare de verificare la Unitatea de învăţare nr. 11

1. Se citeşte de la tastatură un şir s de caractere. Transformaţi


toate caracterele din şirul s în litere mari.

#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
void main(){ clrscr( );
char s[100],c;
int i;
cout<<"dati sirul:"; cin.getline(s,100);
for (i=0;i<=strlen(s);i++) s[i]=toupper(s[i]);
cout<<s;
getch(); }

xy ( x(
2
xy x y) y ) 2

5
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Tablouri

Răspunsuri şi comentarii la întrebările din testele de


autoevaluare
1. #include <iostream.h>
#include <conio.h>
#include <string.h>
void main(){ clrscr( );
char s[100];
cout<<"dati sirul:"; cin.getline(s,100);
cout<<"Lungimea sirului introdus este "<<strlen(s);
getch(); }

2. #include <iostream.h>
#include <conio.h>
#include <string.h>
void main(){ clrscr( );
char c, s[100];
cout<<"dati sirul:"; cin.getline(s,100);
cout<<"dati caracterul:"; cin>>c;
for (i=0;i<=strlen(s)-1;i++)
if (c==s[i]) cout<<i<<” ”;
getch(); }

Recapitulare

Bibliografie

6
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii

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