Introduction aux tableaux 3D en C
Un tableau est un groupe d'éléments avec le même type de données (homogène). Il est également appelé type de données dérivé. Comme déjà remarqué, un tableau 3D augmente l'espace de manière exponentielle, et, une position supplémentaire ajoutée pour localiser l'élément dans le tableau. Dans cette rubrique, nous allons découvrir les tableaux 3D en C.
Par exemple, considérons un bâtiment de 4 niveaux avec de nombreux emplacements pour le stationnement des vélos. Donc, ici pour obtenir les directions parfaites de l'emplacement du vélo garé, nous devons indiquer le numéro de niveau avec le numéro de ligne et de colonne. Lorsque vous dites simplement au tableau, ligne 7 et colonne 4, quel niveau recherche-t-il? Ce tableau 3D est juste pour stocker plus de quantités de données et représenter les positions.
Comment les définir et les mettre en œuvre? Pour aller plus loin, comprenons ces concepts.
Syntaxe:
En C, les tableaux dimensionnels peuvent être déclarés comme suit:
Donc, de la même manière, nous pouvons déclarer le tableau 3-D comme:
La signification de la représentation ci-dessus peut être comprise comme:
- La mémoire allouée à la variable c est de type de données int.
- La capacité totale que ce tableau peut contenir est de 2 * 3 * 4, ce qui équivaut à 24 éléments.
- Les données sont représentées sous la forme de 2 tableaux de 3 lignes et 4 colonnes chacun.
Colonnes | |||||
c (0) Tableau | Lignes | c (0) (0) | c (0) (1) | c (0) (2) | c (0) (3) |
c (1) (0) | c (1) (1) | c (1) (2) | c (1) (3) | ||
c (2) (0) | c (2) (1) | c (2) (2) | c (2) (3) | ||
Colonnes | |||||
c (1) Tableau | Lignes | c (0) (0) | c (0) (1) | c (0) (2) | c (0) (3) |
c (1) (0) | c (1) (1) | c (1) (2) | c (1) (3) | ||
c (2) (0) | c (2) (1) | c (2) (2) | c (2) (3) |
Les données à l'intérieur du tableau sont accessibles via la représentation ci-dessus. Dans la représentation des tableaux 3D, le premier crochet représente le niveau du tableau à prendre en compte, le deuxième serait le nombre de lignes et le troisième le nombre de colonnes.
La représentation d'index du tableau pour le premier élément commence toujours par zéro et se termine par size-1. Ainsi, par exemple, si le nombre de lignes est de 3, la représentation d'index pour accéder aux données dans les lignes sera 0, 1 et 2. La même logique s'applique également au niveau du tableau et aux index de colonne. Pour la représentation ci-dessus, pour obtenir les données du 1 er niveau du tableau avec la 2 ème ligne 3 ème colonne, nous pouvons accéder par c (0) (1) (2).
Initialisation de tableaux 3D en C
Nous pouvons initialiser un tableau 3D similaire au tableau 2D.
Comme mentionné ci-dessus, le nombre total d'éléments pouvant être insérés dans le tableau serait arraysize1 * arraysize2 * arraysize3. Ici, c'est 2 * 4 * 3, ce qui donne 24.
Insertion d'éléments:
Semblable au tableau 2D, pour insérer des éléments dans un tableau 3D, nous devons insérer les données dans des niveaux, des lignes et des colonnes. Donc, pour cela, nous utilisons le concept de boucles. Dans le processus ci-dessus pour initialiser les données dans le tableau, nous avions prédéfini les valeurs.
Ici, les éléments peuvent être insérés dynamiquement par l'utilisateur, conformément aux exigences. Voici un exemple de code pour insérer les éléments.
Code:
#include
int main()
(
int c(2)(4)(3);
int i, j, k;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
)
Comme observé dans le code:
- Tout d'abord, nous déclarons la variable de tableau et les dimensions du tableau avec le nombre de niveaux du tableau, des lignes et des colonnes.
- Nous déclarons ensuite trois variables pour itérer sur les éléments du tableau.
- Ensuite, pour les boucles sont utilisées. La première boucle est pour l'itération des niveaux, la seconde est pour les lignes et la troisième boucle est pour les colonnes.
- La fonction Scanf est utilisée pour lire les données lors de la saisie, puis placer la valeur insérée aux positions i, j et k.
Dans l'exemple ci-dessus, nous avons inséré les données dans une matrice ayant 2 niveaux, 4 lignes et 3 colonnes. Les résultats suivants peuvent être obtenus comme suit:
Comme nous n'avons pas utilisé la fonction printf pour afficher la sortie, le programme écrit n'a lu que les valeurs saisies par l'utilisateur. Après avoir écrit la fonction d'impression (en utilisant pour les boucles), la sortie sera affichée comme:
Éléments de mise à jour:
La mise à jour des éléments du tableau peut être effectuée en spécifiant un élément particulier à remplacer ou en identifiant une position où le remplacement doit être effectué. Pour la mise à jour, nous avons généralement besoin des détails suivants.
- Éléments d'un tableau
- Position / élément, où il doit être inséré
- La valeur à insérer.
Pour mettre à jour les données d'un tableau via les détails des éléments, nous devons d'abord rechercher cet élément dans le tableau, comprendre sa position, puis remplacer l'ancien élément par le nouvel élément.
Ici, nous avons donné ci-dessous deux exemples de mise à jour de l'élément d'un tableau 3D.
Tout d'abord, passons par un exemple où la position de l'élément à mettre à jour est déjà connue.
Code
#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
c(1)(1)(1) = 85;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)
Dans le programme ci-dessus, l'élément du 1er niveau, de la 1ère ligne et de la 1ère colonne est sélectionné et la valeur des données à cette position a été mise à jour.
Les résultats ci-dessus sont les suivants:
Dans le deuxième exemple, nous allons montrer comment la position de l'élément peut être prise dynamiquement comme une valeur entrée par l'utilisateur et mettre à jour la valeur de l'élément à cette position particulière.
Code:
#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the level, row and column number: ");
scanf("%d %d %d", &i, &j, &k);
printf("Enter the new number you want to update with: ");
scanf("%d", &num);
c(i)(j)(k) = num;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)
La sortie est la suivante. Ici, nous avons utilisé la fonction scanf pour lire la valeur donnée par l'utilisateur selon son choix pour la position d'un élément en fonction du niveau du tableau, des numéros de ligne et de colonne.
En tant qu'exercice, pouvez-vous essayer d'écrire un programme en mettant à jour la colonne entière de la matrice avec des valeurs saisies par l'utilisateur?
Maintenant, comme nous le savons, dans le tableau 3D, nous déclarons la taille du tableau au début lui-même. Nous connaissons la taille du tableau mais que se passe-t-il si l'utilisateur donne un numéro de ligne et de colonne aléatoire en dehors de la taille de notre tableau?
Et si nous entrions plus d'éléments que nécessaire à l'intérieur du tableau?
Notez que comme nous n'avons pas écrit de condition if / else ou de blocs try / catch, la sortie de la matrice ne change pas. Cependant, nous pouvons écrire le code en utilisant les conditions mentionnées ci-dessus pour afficher les erreurs dans de tels cas.
Comme dernier exemple, n'êtes-vous pas curieux de savoir ce qui se passe si nous sautons certains éléments entre les deux? Que fait mon programme?
Comme observé dans la sortie ci-dessus:
- Nous avons manqué 4 valeurs dans l'entrée, juste en donnant de l'espace et en appuyant sur Entrée
- Mais nous avions cette marge pour entrer dans les 4 éléments restants.
- Ensuite, nous avons spécifié le dernier niveau, la dernière ligne et la dernière colonne à remplacer par 78. Et la sortie est comme prévu, n'est-ce pas?
Suppression d'éléments
Après les concepts d'insertion et de mise à jour des données à l'intérieur du tableau 3D, voyons maintenant comment supprimer une ligne entière du tableau.
Nous avons écrit un programme dans un format simple afin que le concept des différentes opérations puisse être compris facilement.
Code:
#include
int main()
(
int c(2)(4)(3), i, j, k, num, x;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the value of row number to delete: ");
scanf("%d", &x);
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
if(j==x)
(
for(k=0;k<3;k++)
(
if((j+1)<4)
(
printf("\t%d", c(i)(j+1)(k));
)
)
j ++;
)
autre
(
pour (k = 0; k <3; k ++)
(
printf ("\ t% d", c (i) (j) (k));
)
)
printf ("\ n");
)
printf ("\ n");
)
)
A pris les valeurs d'un tableau dynamiquement. Les étapes suivies sont les suivantes:
- A demandé à l'utilisateur de saisir le numéro (index) de la ligne à supprimer.
- Utilisation pour l'itération en boucle des niveaux, lignes et colonnes du tableau. Nous comparons si le numéro de ligne et le numéro d'entrée utilisateur correspondent ou non.
- S'ils correspondent et si le numéro de ligne est inférieur à la taille du tableau, nous imprimons la ligne suivante. Sinon, nous imprimons la ligne telle quelle.
- Ici, comme nous n'avions aucune condition au niveau du tableau, le numéro de ligne spécifié est supprimé des deux niveaux du tableau.
La sortie est la suivante:
Et si nous donnions le numéro de ligne en dehors de la limite du tableau?
Il ne trouvera pas la ligne à supprimer et quitter le programme en imprimant l'ensemble du tableau.
Comme nous le savons déjà, nous pouvons même déclarer dynamiquement les valeurs du nombre de lignes et de colonnes et écrire le programme en conséquence.
Cela ne semble-t-il pas simple et facile à apprendre?
En tant qu'exercice, pouvez-vous essayer de supprimer un élément particulier pour le tableau 3D maintenant?
Conclusion
Dans cette section, nous avons appris les opérations de base sur les tableaux tridimensionnels.
La matrice 3D contient de nombreux ensembles de matrices 2D. Comme nous avons vu l'échiquier comme un exemple de tableau 2D, si nous avions placé plusieurs échiquiers ensemble, le tableau 3D peut nous aider à choisir d'abord l'échiquier avec lequel vous voulez jouer, puis à choisir les lignes et les colonnes de cet échiquier.
Essayez de résoudre les opérations de base des tableaux 3D et amusez-vous à apprendre C.
Articles recommandés
Ceci est un guide des tableaux 3D en C. Ici, nous discutons de l'initialisation d'un tableau 3D similaire au tableau 2D et aux éléments de Array. Vous pouvez également consulter l'article suivant pour en savoir plus -
- Tableaux en R
- Types de données dans MATLAB
- Comment créer un tableau en C #?
- Comment les tableaux 3D sont-ils définis en Java?
- Tableaux en PHP