Jump to content

Recommended Posts

  • Junior Moderators
Posted

 

** Tablouri de Dimensiune **

Tablouri de Dimensiune sau "Arrays" sunt tipuri de date compuse care au abilitatea de a stoca una sau mai multe valori . Asemenea putem stoca mai multe tipuri de date . (int , float ,char , pointeri chiar etc.)

De exemplu

#include <stdio.h>


int main()
{
	int a[3] = { 0,1,2}; // Initializare Array cu 3 elemente 

	for (int i = 0; i < 3; i++)
	{
		printf("%d | ", a[i]);  // AFISARE CELE TREI ELEMENTE : a[0] , a[1] , a[2] 
	}

	return 0;
}

NOTA 1 ** : Indexul primul element din array va fi intotdeauna 0 , cel putin in limbajele comune C/C++ , C# , Java etc.

Astfel daca

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

printf("%d" , a[1]); // Vom AFISA VALOAREA 2 , NICIDECUM 1 . PENTRU CA CEREM SA ACCESAM AL DOILEA ELEMENT 


/*   
       a[n]  -->  n oricare numar natural o fi 
  
        {1 , 2 , 3 , 4 , 5 , 6 , .... , n }  ---> Valori 
        [0 , 1 , 2 , 3 , 4 , 5 , .... , n-1]  ---> Index (Incepe de la 0 si se termina la (n-1) )  Defapt Index e un sir de crescator de numere naturale
         
         
         

*/

NOTA 2 ** :  ATENTIE ,  putem, din neatentie , sa accesam zone de memorie invalide . Astfel ca : 

#include <stdio.h>


int main()
{
	int a[3] = { 0,1,2}; // Initializare Array cu 3 elemente 

	for (int i = 0; i <= 3; i++)
	{
		printf("%d | ", a[i]);   // VOM AVEA O EROARE LA ACCESAREA LUI a[n] 
	}


	/*
	    

		 {0    , 1   , 2   } -> valorile lui a 
		 [a[0] ,a[1] , a[2]] -> indexurile lui a 

		 iar noi incercam prin loop sa accesam a[3] care nu exista !!! 



	*/

	
	return 0;
}

De asemenea , putem modifica valorile corespondete tabloului 

#include <stdio.h>


int main()
{
	int a[3] = { 0,1,2}; // Initializare Array cu 3 elemente 

	for (int i = 0; i < 3; i++)
	{
		printf("%d | ", a[i]);   // 0 , 1 , 2 
	}

	printf("\n");

	/// Modificam valorile tabloului 

	for (int j = 5 , i = 0 ; i < 3; (j += 2) , (i++))   // i = 0 , 1  , 2  ; j = 5 , 7 , 9
	{
		a[i] = j; // a[0] = 5 ; a[1] = 7 ; a[2] = 9 
	}

	// Printam noul array

	for (int i = 0; i < 3; i++)
	{
		printf("%d | ", a[i]);   // 5 , 7 , 9 
	}

	
	return 0;
}

 

  • Like 1
  • Global-Moderators
Posted

Foarte bine explicat și detaliat despre arrays și cum funcționează în C! Ai subliniat foarte bine importanța indexului, cum să accesezi valorile și potențialele probleme atunci când se depășește limita unui array. Exemplele oferite sunt clare și utile pentru începători. Observația despre modificarea valorilor unui array este și ea foarte bine structurată și arată cum pot fi reutilizate și actualizate datele.

Un mic pont: pentru a evita accesarea unei zone de memorie invalide, este util să folosești sizeof() atunci când știi dimensiunea elementelor. De exemplu:

Citat

for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++) { printf("%d | ", a); }

Astfel, te asiguri că numărul de iterări va fi întotdeauna egal cu dimensiunea reală a array-ului.

  • Like 1
  • Junior Moderators
Posted

Corect , e o abordare buna atunci cand NU cunoastem dimensiunea acelui array . Practic , impartim numarul total de biti alocat pentru array la numarul alocat pentru fiecare unitate individuala (prima unitate are acelasi spatiu alocat ca al doilea , al treilea etc. Multumesc pentru completare !

  • Like 1
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Terms of Use & Privacy Policy