Vous êtes sur la page 1sur 2

Prog. Avancée et Struct.

Données 2AP
Exemple du Cours de l’allocation dynamique (malloc/realloc/free/sizeof)

#include<stdio.h>
#include<stdlib.h> //malloc/realloc/free/sizeof
main(){
float *t;
int i,n, n2, is;
printf("Donner le nbre de reels a saisir:\n");
scanf("%d",&n);
//Allocation de la mémoire : malloc
t=(float*)malloc(n*sizeof(float));
if(t!=NULL){
printf("Tableau bien alloue!\n");
//Lecture et ecriture du tableau t
puts("Lecture du tableau:");
for(i=0;i<n;i++){
printf("Donner le reel %d:\n",i+1);
scanf("%f",t+i);
}
puts("Affichage du tableau:");
for(i=0;i<n;i++){
printf("T[%d]=%.2f\n",i+1,*(t+i));
}
printf("Donner le nbre de cases a rajouter ds le tableau:\n");
scanf("%d",&n2);
t=(float*)realloc(t,(n+n2)*sizeof(float)); //Ajout de n2 cases à la fin de t
if(t){
for(i=n;i<n+n2;i++){
printf("Donner le reel %d:\n",i+1);
scanf("%f",t+i);
}
for(i=0;i<n+n2;i++){
printf("T[%d]=%.2f\n",i+1,*(t+i));
}
}else puts("Impossible de rajouter d'autres cases!!!");

printf("Donner l'indice du reel a supprimer:\n");


scanf("%d",&is);
for(i=is;i<n+n2-1;i++){
*(t+i)=*(t+i+1);
}
t=(float*)realloc(t,(n+n2-1)*sizeof(float)); // Retrancher la dernière case de t
for(i=0;i<n+n2-1;i++){
printf("T[%d]=%.2f\n",i+1,*(t+i));

M. AATILA
}
free(t);//Liberation de la mémoire allouee par malloc
}else printf("Espace memoire non suffisant!!!!\n");
}

Exercice d’application :

En utilisant l’allocation dynamique et le formalisme pointeurs :

1. Lire un tableau de N entiers au clavier ?


2. Afficher votre tableau sur écran ?
3. Lire un entier x et une position pos et insérer l’entier x dans la position pos tout en
redimensionnant votre tableau ?
4. Réafficher votre tableau ?
5. Trier votre tableau dans un ordre croissant ?
6. Lire un entier x au clavier et insérer le dans le tableau d’une sorte à ce que le tableau
reste trié dans le même ordre tout en redimensionnant votre tableau ?
7. Réafficher votre tableau ?
8. Lire une position p et supprimer l’entier de cette position de votre tableau ? N’oublier
pas de redimensionner votre tableau !
9. Lire un entier x que vous devez chercher dans votre tableau. Si x existe dans le
tableau, supprimer-le et redimensionner votre tableau ?
10. Réafficher votre tableau ?

Vous aimerez peut-être aussi