Structuri de date

1.Șiruri

Până acum am folosit variabile pentru a stoca valori îin memorie. Acum vom utiliza o metodă nouă de a stoca mai multe valori, împreună, ca un tot unitar, numit șir sau array.

Un șir este un număr fix de elemente de același tip, stocat secvențial în memorie. Astfel un șir de întregi stochează un număr de întregi, un șir de caractere stocează un anumit număr de caractere, etc. Mărimea unui șir poartă denumirea de dimensiune. Declararea unui șir se face astfel:

tip_date numeSir[dimensiune];

pentru a declara un șir de 3 numere intregi numit sir_int se face astfel:

int sir_int[3];

Elementele unui șir se accesează folosind un index. În C++, șirurile sunt indexate de la zero, astfel ca primul element al șirului are indexul 0. Astfel pentru a accesa al treilea element al șirului, vom scrie sir_int[2]; Valoarea returnată poate fi folosită ca orice alt număr întreg. Bineînțeles, șirurile de caractere trebuie inițializate, la fel ca orice altă variabilă, înainte de a putea fi folosite. există mai multe modalități de a inițializa un șir.

O posibilitate constă în declararea șirului, iar apoi inițializare unora sau tuturor elementelor acestuia:

int sir_int[3];

sir_int[0] = 1;
sir_int[1] = 2;
sir_int[2] = 3;

O altă metodă constă în inițializarea în momentul declarării:

int sir_int[3] = {1, 2, 3};

Dacă nu cunoaștem apriori lungimea șirului putem să-l declarăm fără lungime predefinită, lăsând compilatorul să determine dimensiunea acestuia, în funcție de numărul de elemente încărcate:

int sir_int[] = {1, 2, 3, 4, 5};

Aici compilatorul, va crea un șir de numere întregi de dimensiune 5.

Exemplu:

char sir[256];         //definirea unui sir capabil sa stocheze 256 de caractere
int i;    
for (i=0; i <26; i++)
    sir[i]= 'A'+i;          //initializarea sirului cu literele din alfabetul latin
sir[i]=NULL;                //avand in vedere ca sirul nostru < de 256 de caractere compilatorul de C utilizeaza caracterul NULL pentru a reprezenta ultimul caracter al sirului
cout<<"Sirul este: "<< sir; //afisarea sirului

TODO: Să se afișeze șirul de mai sus caracter cu caracter până la depistarea caracterului NULL, iar la final să se afișeze lungimea șirului.

#include <stdio.h>
#include <string.h>

int main()
{
char a[100], b[100];

printf("Introduceți primul șir:\n");
gets(a);

printf("Introduceți al doilea șir:\n");
gets(b);

if (strcmp(a,b) == 0)
printf("Șirurile sunt identice.\n");
else
printf("Șirurile sunt diferite.\n");

return 0;
}

2.Tablouri

Limbajul C++ suportă de asemenea crearea de structuri multidimensionale prin adăugarea de paranteze pătrate suplimentare. Astfel declararea unui tabel bidimensional se face astfel:

tip_date numeTablou[dimensiune1][dimensiune2];

Astfel tabloul va avea dimensiune1 x dimensiune2 elemente de același tip, și poate fi considerat un șir de șiruri/ Primul index indică care subșir dimensiune1 a subșirurilor să fie accesat, iar secundul permite accesul la unul din elementele dimensiune2 din cadrul subșirului indicat de dimensiune1.

Tablourile se pot inițializa la declarare astfel:

int intTablou[3];

intTablou[0] = 1;
intTablou[1] = 2;
intTablou[2] = 3;

intTablou[3] = 4;
intTablou[4] = 5;
intTablou[5] = 6;
intTablou[6] = 7;
intTablou[7] = 8;

sau:

int intTablou[2][4] = {1, 2, 3, 4, 5, 6, 7, 8};

sau:

int intTablou[2][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}};

Afisarea inițializarea unui șir de caractere și afișarea acestuia se realizează astfel:

char helloworld[] = { 'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\0' };

cout << helloworld << endl;

TODO: Să se înlocuiască în șirul de caractere de mai sus ultimul cuvânt, astfel încât la afișarea șirului să apară mesajul: "Hello John!".
TIP: se recomandă folosirea caracterului NULL, pentru terminarea șirului.