Documente Academic
Documente Profesional
Documente Cultură
Tablouri
Siruri de caractere
Structuri
2
Introducere
Memoria interna a calculatorului e organizata ca un ansamblu de celule separate,
care au adrese consecutive.
Memoria externa este un ansamblu de locatii de memorare, numite sectoare, care
au adrese consecutive.
Cea mai mica unitate de memorie care are o adresa este byte-ul.
5
Vectori
Un vector reprezintă o colectie de date de acelasi tip reprezentate sub forma unei
linii sau coloane.
Exemplu [1 3 9 7] 0 1
0 1 2 3 1 3
Datele sunt identificate prin pozitia acestora
2 9
în vector, ce este dată de indice. 3
7
6
Declararea (definirea) unui vector :
Exemplu:
7
Modul de alocare a memoriei unui vector:
Observatie:
adr. N + 1 semnifica adresa N (primul element al vectorului) + 1*sizeof(int).
De exemplu, daca adr. N = 1000, atunci adr. N + 1 = 1000+1*sizeof(int)= 1000+2=1002.
8
Atribuirea de valori unui vector:
nume_vector[indice]
9
Vector, indice, adresa de memorie, valoare…..
Indici: 0 1 2 3
123 324 456 100
adr. N adr. N+1 adr. N+2 adr. N+3
int x[4];
x stochează adresa din memorie a
printf(“%p”, x); primului element din vector (adr. N)
10
Atribuirea de valori unui vector:
int a[5]={10,20}; 10 5 0 0 0
Indici 0 1 2 3 4
11
Citirea elementelor unui vector:
Executie:.
int v[10], i;
> v[0]=
for (i=0; i<3; i++) > v[1]=
{ > v[2]=
printf(“v[%d]=”, i);
scanf(“%d”, &v[i]);
}
Observatii: nu este obligatoriu să folosesc toate valorile alocate, în acest caz 10,
pot folosi un număr mai mic, dar nu un număr mai mare eroare.
12
Aplicatia 1: Sa se determine maximul elementelor unui vector.
printf(“dimensiune vector=”);
scanf(“%d”, &dim); dim – lungime logica
max=v[0];
for (i=1; i<dim; i++)
if (v[i]>max)
max=v[i];
printf(“max=%d”,max);
13
Parcurgerea elementelor vectorului
crescator descrescator
14
Aplicatie: să se calculeze suma a doi vectori de numere reale. Vectorii au acelasi
număr de elemente n(<100). Suma=v1[0]+v2[0]+ … + v1[N]+v2[N]
Variabile de intrare/lucru:
float v1[100], v2[100];
Variabile de iesire:
float suma;
Structura program:
- se citeste dimensiunea dim,
- se citesc valorile vectorilor v1 si v2,
- se parcurg vectorii si se calculează suma valorilor.
15
Aplicatia 2: să se calculeze suma a doi vectori de numere reale. Vectorii au acelasi
număr de elemente n(<100). Suma=v1[0]+v2[0]+ … + v1[N]+v2[N]
printf(“dim=”);
scanf(“%d”, &dim);
16
Aplicatia 3: să se concateneze doi vectori de numere întregi de dimensiuni N si
respectiv M. Vectorul obtinut va fi stocat separat (N,M<100).
Variabile de intrare/lucru:
int v1[100], v2[100];
int N,M;
int i;
Variabile de iesire:
int v[200];
Structura program:
- se citesc dimensiunile N si M,
- se citesc valorile vectorilor v1 si v2,
- se parcurge vectorul v1 stocăm valori în v
- se parcurge vectorul v2 stocăm valori în v.
17
Aplicatia 3: să se concateneze doi vectori de numere întregi de dimensiuni N si
respectiv M. Vectorul obtinut va fi stocat separat (N,M<=100).
printf(“Introduceti N si M:”);
scanf(“%d %d”, &N, &M);
Exemplu: 0 1 2 3 j
i
0 1 2 0 0
1 3 1 56 0
2 9 1 1 1
3 7 0 1 0
Datele sunt identificate prin indicele liniei (i) si respectiv indicele coloanei (j).
19
Declararea (definirea) unei matrici :
Exemplu:
20
Modul de alocare al memoriei unei matrici:
Astfel, se alocă 2x4 locatii de memorie consecutive de tip int, ce vor corespunde
liniilor si coloanelor matricei m:
21
Citirea elementelor unei matrici
int m[2][4], i, j;
Executie:.
for (i=0; i<2; i++) > m[0][0]=12 (enter)
for (j=0; j<4; j++) > m[0][1]=45 (enter)
{ > m[0][2]=14 (enter)
printf(“m[%d] [%d] = ”, i, j ); > m[0][3]=42 (enter)
scanf(“%d”, &m[i][j]); > m[1][0]=5 (enter) samd
}
Observatie: 2 si 4 dau dimensiunile fizice ale matricei: 2 –nr. de linii, 4-nr. de cloane
int m[10][10], i, j, l, c;
printf("l="); scanf("%d", &l); l – nr. de linii
printf("c="); scanf("%d", &c); c – nr. de coloane
for (i=0; i<l; i++)
Observatie:
for (j=0; j<c; j++) l si c dau dimensiunile logice ale
{ matricei
printf(“m[%d] [%d] =”, i ,j );
scanf(“%d”, &m[i][j]);
}
22
Observatii:
Indici: 0 1 2 3
0 123 324 456 100
adr. N adr. N+1 adr. N+2 adr. N+3
1 34 5 258 199
adr. N+4 adr. N+5 adr. N+6 adr. N+7
24
Modul de accesare din memorie al valorilor matricei:
Indici: 0 1 2 3
0 123 324 456 100
adr. N adr. N+1 adr. N+2 adr. N+3
1 34 5 258 199
adr. N+4 adr. N+5 adr. N+6 adr. N+7
25
Aplicatie: să parcurgă elementele de sub diagonala principală (inclusiv) ale unei
matrice pătratice de numere reale (<=20x20). Apoi sa se calculeze suma lor.
26
Aplicatia 4: să parcurgă elementele de sub diagonala principală (inclusiv) ale unei
matrice pătratice de numere reale (<20x20).
float m[20][20];
int i, j, N;
28