Sari la conținut

[Structuri de Date - C] Introducere in Tablouri de Dimensiune

Topicul va fi automat blocat la 09:08


Postări Recomandate

  • LCS PREMIUM
Postat

 

** 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;
}

 

  • Global-Moderators
Postat

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.

  • LCS PREMIUM
Postat

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 !

Alătură-te conversației

Poți posta acum și să te înregistrezi mai târziu. Dacă ai un cont, autentifică-te acum pentru a posta cu contul tău.

Vizitator
Din păcate, conținutul tău conține termeni pe care nu îi permitem. Te rugăm să editezi conținutul pentru a elimina cuvintele evidențiate de mai jos.
Răspunde la acest topic...

×   Inserat ca text bogat.   Restabiliți configurația implicită

  Doar 75 emoji sunt permise.

×   Linkul tău a fost încorporat automat.   Afișează ca link în schimb

×   Conținutul tău precedent a fost restaurat.   Curăță editor

×   Nu poți lipi imagini direct. Încarcă sau inserează imagini din URL.

  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...

Informații Importante

Termeni de Utilizare & Politică Intimitate