/* Cumulus -- FB4 19 octobre 2018 tableau.c - version 1 cd /volumes/dev/dev/sources/mes_sources/tableau La commande suivante sert dans le cas ou nous avons plusieurs fichiers c à compiler dans le même dossier. ATTENTION, dans ce cas vous ne devez avoir qu'un seul projet dans le dossier source. gcc *.c -o tableau.prg; ./tableau.prg ou bien dans le cas d'un seul fichier source. gcc -o tableau.prg tableau.c; ./tableau.prg Je vous conseil de compiler la source et d'executer le programme ensuite. gcc -o tableau.prg tableau.c ./tableau.prg Déclaration d'un tableau tableau[5] = {14,10,5,3,1}; ou bien tableau[5] = {0}; placera la valeur zéro dans tout le tableau. ATTENTION tableau[5] = {7}; placera 7 à la première valeur et zéro aux 4 suivantes. Le tableau est déjà un pointeur donc le & est inutile dans l'appel d'une fonction et il est donc aussi inutile de copier le tableau dans la fonction. Pour faire la différence entre une variable et une défine, vous pouvez écrire la define en majuscule. */ #include #include /* Définir une valeur define vous permet de la retrouver plus facilement et plus rapidement. Toutefois attention de ne pas confondre un define avec une variable. Pour faire la différence entre une variable et une défine, vous pouvez écrire cette dernière en majuscule. */ #define TAILLE_TABLEAU 5 #define TAILLE_TABLEAU_MUL 10 #define NOMBRE_LIGNES 3 #define NOMBRE_COLONNES 2 /* ------ Le fichier de définition #include "tableau.h" ------ */ int *creer_tableau(void); int *creer_tableau_mul(int multiple_de); void vider_tableau(int tab[], int taille); void afficher_tableau(int tab[], int taille); /* ------ Le fichier main "tableau.c" ------ */ int main(void) { int tableau1[TAILLE_TABLEAU] = {14,10,5,3,1}; int tableau2[TAILLE_TABLEAU] = {0}; int tableau3[TAILLE_TABLEAU] = {20,40,60,80,100}; int i, j; printf ("\n"); printf ("Tableau1 "); for (i = 0; i < TAILLE_TABLEAU; i++) printf ("[%d] ", tableau1[i]); printf ("\n\n"); // printf ("Tableau2 "); for (i = 0; i < TAILLE_TABLEAU; i++) printf ("[%d] ", tableau2[i]); printf ("\n\n"); // tableau1[2] = 100; printf ("Tableau1 "); for (i = 0; i < TAILLE_TABLEAU; i++) printf ("[%d] ", tableau1[i]); printf ("\n\n"); // // Vous pouvez bien sur créer une ou des fonctions pour afficher ou traiter vos tableaux. int multiple_de = 71; int *tableau_multiple3 = creer_tableau_mul(multiple_de); printf ("Tableau des multiplication de %d : ",multiple_de); afficher_tableau(tableau_multiple3,TAILLE_TABLEAU_MUL); vider_tableau(tableau_multiple3,TAILLE_TABLEAU_MUL); printf ("Tableau des multiplication vide : "); afficher_tableau(tableau_multiple3,TAILLE_TABLEAU_MUL); // // Voici un tableau à deux dimensions int damier[NOMBRE_LIGNES][NOMBRE_COLONNES] = { {1,2}, {3,4}, {5,6}, }; printf ("Tableau à deux colonnes :\n"); // la lecture du tableau à deux dimensions. for (i = 0; i < NOMBRE_LIGNES; i++) for (j = 0; j < NOMBRE_COLONNES; j++) printf ("[%d] [%d] = %d\n", i, j, damier [i][j]); printf ("\n"); return (0); } // fin du programme. /* ----------------------------------------------*/ /* ------ Le fichier #include "fonctiontableau.h" ------ */ int *creer_tableau(void) { static int tableau_entiers[TAILLE_TABLEAU]; int i; for(i = 0 ; i < TAILLE_TABLEAU; i++) tableau_entiers[i] = 0; // je désire initialiser le tableau à zéro return tableau_entiers; // c'est une variable local, il suffit de la placer en static pour la retourner. } /* ----------------------------------------------*/ void vider_tableau(int tab[], int taille) { int i = 0; for (i = 0; i < taille; i++) tab[i] = 0; } /* ----------------------------------------------*/ int *creer_tableau_mul(int multiple_de) { static int tableau_entiers[TAILLE_TABLEAU_MUL]; int i = 0; int j = 1; for(i = 0 ; i < TAILLE_TABLEAU_MUL; i++) { tableau_entiers[i] = j *multiple_de; // attention, ici j'ai deux instructions donc il faut les {} j = j+1; } return tableau_entiers; // c'est une variable local, il suffit de la placer en static pour la retourner. } /* ----------------------------------------------*/ void afficher_tableau(int tab[], int taille) { int i = 0; for (i = 0; i < taille; i++) printf ("[%d] ", tab[i]); printf ("\n\n"); } /* ----------------------------------------------*/