Récapitulatif : Tableaux dynamiques
Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 37 sur 63.
Défi
FacileÉcrivez un programme C qui crée un tableau dynamique à partir des entrées de l’utilisateur, traite les données et montre une bonne gestion de la mémoire. Votre programme doit :
- Lire un entier
nauprès de l’utilisateur, qui représente le nombre d’éléments à stocker - Utiliser
malloc()avecsizeof()pour allouer dynamiquement de la mémoire pour un tableau denentiers - Vérifier si l’allocation de mémoire a réussi : en cas d’échec, afficher
Memory allocation failed!et terminer le programme - Si l’allocation réussit, afficher
Array of size [n] created successfully! - Lire
nvaleurs entières auprès de l’utilisateur et les stocker dans le tableau alloué - Calculer et afficher la somme de tous les éléments au format :
Sum: [value] - Trouver et afficher la valeur minimale au format :
Minimum: [value] - Compter le nombre d’éléments supérieurs à la moyenne et afficher le résultat au format :
Elements above average: [count] - Afficher la mémoire totale utilisée, en octets, au format :
Memory used: [bytes] bytes - Utiliser
free()pour libérer la mémoire - Afficher
Memory successfully freed!pour confirmer que le nettoyage a bien été effectué
N’oubliez pas d’inclure l’en-tête <stdlib.h> pour utiliser malloc() et free(). Ce défi teste votre compréhension complète de la gestion dynamique de la mémoire, de l’allocation à l’utilisation, jusqu’à la libération correcte de la mémoire.
Par exemple, si l’entrée est :
5
12 8 15 3 20Votre sortie devrait être :
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 3
Memory used: 20 bytes
Memory successfully freed!Ce défi complet montre tout le cycle de vie de la gestion dynamique de la mémoire, tout en effectuant des opérations de traitement pertinentes sur les données du tableau alloué.
Essayez vous-même
#include <stdio.h>
#include <stdlib.h>
int main() {
// Lire le nombre d’éléments
int n;
scanf("%d", &n);
// TODO: Écrire votre code ci-dessous
// 1. Allouer de la mémoire pour n entiers à l’aide de malloc()
// 2. Vérifier si l’allocation a réussi
// 3. Lire n entiers dans le tableau
// 4. Calculer la somme, trouver le minimum et compter les éléments supérieurs à la moyenne
// 5. Afficher les résultats et libérer la mémoire
return 0;
}Toutes les leçons de Logique & Flux
1Les bases des pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de pointeursL'opérateur d'adresse (&)L'opérateur de déréférencement (*)Pointeurs NULLRécapitulatif : Les bases des pointeurs4Projet : Utilitaire de texte simple
Présentation du projetCompter les caractères2Pointeurs et Tableaux
Noms de tableaux comme pointeursÉléments de tableau - PointeursArithmétique des pointeursComparaison de pointeursRécapitulatif : Parcours de tableau par pointeur5Pointeurs et fonctions
Passage par valeurPassage de pointeurs aux fonctionsModifier des variables via des pointeursUn exemple classique : SwapPassage de tableaux aux fonctionsRécapitulatif : Pointeurs comme arguments de fonction3Tableaux de caractères et chaînes
Les chaînes comme tableaux de charLe terminateur nulSaisie de chaînes avec scanfUtilisation de strlen()Utilisation de strcpy()Utilisation de strcat()Utilisation de strcmp()Récapitulatif : Fonctions de base sur les chaînes6Gestion de la mémoire
Mémoire Pile vs TasAllocation dynamique - malloc()Utiliser sizeof() pour l'allocationVérifier l'échec de l'allocationLibérer la mémoire avec free()Allouer avec calloc()Récapitulatif : Tableaux dynamiquesEntraînez-vous par vous-même : Compilateur C en ligne