LCS PREMIUM NOT a MERCEDES Postat Noiembrie 21, 2024 LCS PREMIUM Postat Noiembrie 21, 2024 ** 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; } 1
Global-Moderators Dexter. @ GOV.RO Postat Noiembrie 21, 2024 Global-Moderators Postat Noiembrie 21, 2024 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. 1
LCS PREMIUM NOT a MERCEDES Postat Noiembrie 21, 2024 Autor LCS PREMIUM Postat Noiembrie 21, 2024 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 ! 1
Postări Recomandate