Vous êtes sur la page 1sur 3

Enoncé

Ecrire un programme C, qui définit et utilise une fonction Inserer, qui insère un
entier dans un tableau. L'entier à insérer et la position d'insertion sont lus par
cette fonction même.

Correction
Dans cet exercice il est demandé d'insérer un nouvel élément dans un tableau
d'entiers à l'aide d'une fonction. Elle doit en plus lire cet élément et la position
où on souhaite l'insérer. Cette fonction qu'on va appeler Inserer aura comme
premier paramètre un tableau d'entiers représenté par son nom qui est un
pointeur sur un entier. Puis un deuxième paramètre pour la taille, et pour lequel
on va opter pour la transmission par adresse puisque le nombre d'éléments du
tableau va augmenter après l'opération d'insertion et on veut que ce changement
subsiste à l'extérieur de la fonction (ligne 3).

A l'intérieur du bloc de définition de la fonction Inserer, on va demander à


l'utilisateur d'entrer l'entier à insérer puis la position d'insertion et qu'on va lire
respectivement dans les deux variables a et j (lignes 6-9). Ensuite on incrémente
la taille du tableau qui est *n par 1 (ligne 10). Le *n ne doit pas être confondu
avec n qui représente à l'intérieur de la définition de la fonction Inserer l'adresse
du nombre d'éléments du tableau ou tout simplement un pointeur sur la variable
contenant cette quantité.

Avant de pouvoir insérer a dans la position j, on décale les élément du


tableau t qui se trouvent entre les deux indices *n-2 et j, y compris les deux
bornes, d'un pas vers les indices supérieurs et en commençant obligatoirement
par la case *n-2 (lignes 11-12). Après ceci, on place le nouvel élément dans sa
position j (ligne 13).

Pour exploiter la fonction définie précédemment, on lit dans la fonction main un


tableau t de taille n. Et on appelle ensuite cette fonction en lui passant les deux
paramètres t et &n (ligne 32). On a aussi affiché le tableau avant et après l'appel
de la fonction Inserer à l'aide de la fonction simple Afficher pour visualiser le
changement (lignes 15-20).

Solution
1. #include<stdio.h>
2. #include<stdlib.h>
3. void Inserer(int *t,int *n)
4. {
5. int i,j,a;
6. printf("Entrez l'entier a inserer:\n");
7. scanf("%d",&a);
8. printf("Entrez la position d'insertion:\n");
9. scanf("%d",&j);
10. (*n)++;
11. for(i=*n-1;i>j;i--)
12. t[i]=t[i-1];
13. t[j]=a;
14. }

15. void Afficher(int *t,int n)


16. {

17. int i;
18. for(i=0;i<n;i++) printf("%d ",t[i]);
19. printf("\n");
20. }

21. int main()


22. {

23. int t[100];


24. int i,n;
25. printf("Donnez le nombre des elements du tableau:\n"
);
26. scanf("%d",&n);
27. printf("Entrez les elements du tableau:\n");
28. for(i=0;i<n;i++)
29. scanf("%d",&t[i]);
30. printf("Le tableau avant l'insertion:\n");
31. Afficher(t,n);
32. Inserer(t,&n);
33. printf("Le tableau apres l'insertion:\n");
34. Afficher(t,n);
35. system("pause");
36. return 0;
37. }

Vous aimerez peut-être aussi