Récapitulatif : Tableaux dynamiques
Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 37 sur 63.
Défi
FacileÉcrivez un programme C qui crée un tableau dynamique basé sur la saisie de l'utilisateur, traite les données et démontre une gestion appropriée de la mémoire. Votre programme doit :
- Lire un entier
nde l'utilisateur représentant 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 - si elle échoue, afficher
Memory allocation failed!et terminer le programme - Si l'allocation réussit, afficher
Array of size [n] created successfully! - Lire
nvaleurs entières 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 combien d'éléments sont supérieurs à la moyenne et les afficher au format :
Elements above average: [count] - Afficher la mémoire totale utilisée en octets au format :
Memory used: [bytes] bytes - Utiliser
free()pour désallouer la mémoire - Afficher
Memory successfully freed!pour confirmer le nettoyage approprié
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'au nettoyage approprié.
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: 2
Memory used: 20 bytes
Memory successfully freed!Ce défi complet démontre le cycle de vie complet de la gestion dynamique de la mémoire tout en effectuant des opérations de traitement de données significatives sur le 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);
// À FAIRE : Écrivez votre code ci-dessous
// 1. Allouer de la mémoire pour n entiers en utilisant malloc()
// 2. Vérifier si l'allocation a réussi
// 3. Lire n entiers dans le tableau
// 4. Calculer la somme, trouver le minimum, compter les éléments au-dessus de la moyenne
// 5. Afficher les résultats et libérer la mémoire
return 0;
}Toutes les leçons de Logic & Flow
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 dynamiques