Masive - Seminar

Previzualizare seminar:

Extras din seminar:

Masivele sunt structuri de date omogene cu un numar finit si cunoscut de elemente, ce ocupa un spatiu contiguu de memorie. Structurile de date de tip masiv reprezinta instrumente de stocare a datelor sub forma de zone compacte si continue din memoria calculatorului.

Un masiv este caracterizat de urmatoarele elemente:

- numele;

- tipul de data asociat;

- numarul de dimensiuni;

- numarul de elemente pentru fiecare dimensiune.

Masivele sunt:

- unidimensionale;

- bidimensionale;

- multidimensionale.

Deoarece elementele unui masiv sunt omogene din punct de vedere al tipului lor, dimensiunea in octeti a unui masiv este data de relatia:

dim_masiv = nr_elem * dim_elem

1. Alocarea de memorie

Se efectueaza static prin instructiuni de forma:

tip nume_masiv[dim_1];

tip nume_masiv[dim_1][dim_2];

tip nume_masiv[dim_1][dim_2][dim_3];

tip nume_masiv[dim_1][dim_2][dim_3]...[dim_n];

Lungimea zonei de memorie alocata este:

L=lg(tip)*dim_1*dim_2*dim_3*....*dim_n

Pentru definirea: float alfa[10][14]; L(alfa)=lg(float)*10 * 14= 4*10*14=560 baiti.

2. Masive unidimensionale (vectori)

Vectorii sunt masive unidimensionale. In C++ vectorii se declara folosind sintaxa:

tip nume[n];

unde:

- tip – tipul de data folosit; poate fi unul din tipurile de baza (int, float, char, …) sau un tip definit de utilizator (articole, obiecte);

- nume – numele prin care va fi referit vectorul;

- n – numarul de elemente ale vectorului.

In varianta statica, un masiv unidimensional v cu maxim 100 de elemente se defineste astfel:

int v[100];

In varianta dinamica, definirea este realizata printr-un pointer la masivul unidimensional v:

int *v;

Exemple de declaratii:

// vector de 100 valori intregi

int vanzari[100];

// vector de 15 valori reale

float temperaturi[15];

Numerotarea elementelor incepe cu 0, de aceea nu trebuie sa se confunde declaratia de masiv cu adresarea indexata a elementului:

int v[100]; //declaratia unui vector cu 100 componente;

v[100]=10; //atribuire incorecta, deoarece nu exista elementul cu nr. 100

Alocarea zonei de memorie aferenta masivului unidimensional v cu n elemente de tip int se face astfel:

int *v = (int*)malloc(n * sizeof(int));

Memorarea vectorilor se face intr-un spatiu continuu de memorie. Numele vectorului este de fapt un pointer catre adresa primului element. Pentru o declaratie de forma:

int v[5]; reprezentarea in memoria interna este:

Dimensiunea totala a vectorului este calculata ca produs intre numarul de elemente si dimensiunea unui element. Initializarea vectorului se poate face la declarare printr-o constructie de forma:

tip nume[ ] = {lista_valori};

Se observa ca, in acest caz, nu este necesara precizarea numarului de elemente. Acesta va fi dedus automat de compilator din dimensiunea listei cu care se face initializarea.

In cazul in care numarul de elemente precizat este mai mare decat numarul de elemente din lista se va realiza o initializare partiala a vectorului.

Observații:

ASE, anul 3

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Masive - Seminar
    • ex1.cpp
    • ex2.cpp
    • ex3.cpp
    • Seminar_2.doc
Alte informații:
Tipuri fișiere:
doc, cpp
Nota:
8.5/10 (2 voturi)
Nr fișiere:
4 fisiere
Pagini (total):
6 pagini
Imagini extrase:
6 imagini
Nr cuvinte:
1 575 cuvinte
Nr caractere:
9 223 caractere
Marime:
19.64KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Seminar
Domeniu:
Limbaje de Programare
Predat:
la facultate
Materie:
Limbaje de Programare
Sus!