Ecrire un programme qui saisit la dimension N d’un tableau de int (le tableau est initialement définit avec une taille maximum MAX que N ne doit pas excéder) remplit le tableau par des valeurs entrées au clavier et l’affiche.
Le programme doit ensuite effacer toutes les occurrences de la valeur 0 dans le tableau, tasser les éléments restants et afficher le tableau ainsi modifier.
Pour cela écrire les fonctions suivantes :
void SaisirTableau (int *Tab, int N) ;
void AfficherTableau(int *Tab, int N) ;
int TasserTableau(int *Tab , int N) ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#include #define MAX 50 void SaisirTableau(int *, int ) ; void AfficherTableau(int *, int) ; int TasserTableau(int *, int) ; main() { /* Déclarations */ int T[MAX]; /* tableau donné */ int N,M; /* dimension */ /* Saisie de la dimension */ do { printf("Dimension du tableau (max.%d) : ",MAX); scanf("%d", &N ); }while(N>MAX) ; /* Saisie des données */ SaisirTableau(T,N) ; /* Affichage du tableau */ AfficherTableau(T,N) ; /*Tasser les elements du tableau */ M = TasserTableau(T,N) ; /* Edition des résultats */ AfficherTableau(T ,M) ; } void SaisirTableau(int *Tab, int N) { int i ; for (i=0; i<N; i++) { printf("Elément %d : ", i); scanf("%d", &Tab[i]); } } void AfficherTableau(int *Tab, int N) { int i ; printf("Tableau donné : \n"); for (i=0; i<N; i++) printf("%d ", Tab[i]); printf("\n"); } int TasserTableau(int * Tab, int N) { int i,j ; /* Effacer les zéros et comprimer : */ /* Copier tous les éléments de i vers j et */ /* augmenter j pour les éléments non nuls. */ for (i=0, j=0 ; i<N ; i++) { Tab[j] = Tab[i] ; if (Tab[i]) j++ ; } /* La nouvelle dimension du tableau est retournée */ return j ; } |