Récap : Tableau de structs
Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 62 sur 63.
Défi
FacileCréez un programme C qui gère un système d'inventaire de produits à l'aide d'un tableau de structures. Votre programme doit :
- Définir une
structnomméeProductavec les membres suivants :- Un tableau de caractères
namede taille 30 - Un float
price - Un entier
stock
- Un tableau de caractères
- Écrire une fonction nommée
findMostExpensivequi :- Prend un tableau de
struct Productet un entiersizeen paramètres - Retourne un entier représentant l'index du produit ayant le prix le plus élevé
- Utilise une boucle pour parcourir tous les produits et comparer leurs prix
- Retourne l'index du premier produit trouvé avec le prix maximum
- Prend un tableau de
- Écrire une fonction nommée
calculateTotalValuequi :- Prend un tableau de
struct Productet un entiersizeen paramètres - Retourne un float représentant la valeur totale de l'inventaire
- Calcule la valeur totale en additionnant (prix × stock) pour chaque produit
- Prend un tableau de
- Écrire une fonction nommée
findLowStockqui :- Prend un tableau de
struct Product, un entiersize, et un entierthresholden paramètres - Retourne un entier représentant le nombre de produits dont le stock est inférieur au seuil
- Utilise une boucle pour compter les produits dont le stock est inférieur à la valeur du seuil
- Prend un tableau de
- Dans la fonction main :
- Créer un tableau de 3
struct Productnomméinventory - Lire les entrées pour chaque produit dans cet ordre : nom, prix, stock
- Remplir le tableau avec les données saisies
- Afficher les informations de chaque produit dans ce format exact :
Product [index]: [name] - Price: [price], Stock: [stock] - Appeler la fonction
findMostExpensiveet afficher le résultat dans ce format exact :Most expensive product: [name] - Appeler la fonction
calculateTotalValueet afficher le résultat avec exactement 2 décimales dans ce format exact :Total inventory value: [total_value] - Lire un entier représentant le seuil de stock bas
- Appeler la fonction
findLowStockavec le seuil et afficher le résultat dans ce format exact :Products with low stock: [count] - Vérifier si le produit le plus cher a un stock supérieur à 10 :
- Si oui : afficher
Most expensive product is well stocked - Si non : afficher
Most expensive product needs restocking
- Si oui : afficher
- Créer un tableau de 3
Ce défi teste votre capacité à travailler avec des tableaux de structures, à implémenter des fonctions qui traitent des tableaux de structures et à effectuer divers calculs et comparaisons sur des données structurées. Vous pratiquerez l'indexation de tableaux avec des structures, la conception de fonctions pour le traitement de données et la combinaison de plusieurs opérations pour analyser les informations d'un inventaire.
Essayez vous-même
#include <stdio.h>
#include <string.h>
// TODO: Définir la structure Product ici
// TODO: Implémenter la fonction findMostExpensive ici
// TODO: Implémenter la fonction calculateTotalValue ici
// TODO: Implémenter la fonction findLowStock ici
int main() {
// Créer un tableau de 3 produits
struct Product inventory[3];
// Lire les entrées pour chaque produit
for (int i = 0; i < 3; i++) {
scanf("%s", inventory[i].name);
scanf("%f", &inventory[i].price);
scanf("%d", &inventory[i].stock);
}
// TODO: Afficher les informations de chaque produit
// TODO: Trouver et afficher le produit le plus cher
// TODO: Calculer et afficher la valeur totale de l'inventaire
// Lire le seuil de stock bas
int threshold;
scanf("%d", &threshold);
// TODO: Trouver et afficher les produits avec un stock bas
// TODO: Vérifier si le produit le plus cher est bien stocké
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 fonction8Structures et Pointeurs
Pointeurs vers des structuresL'opérateur flèche (->)Passage de structures par valeurPassage de pointeurs de structuresAllocation dynamique de structuresRécap : Modifier une structure - Ptr11Défis de révision finale
Récap : Concaténation dynamique de chaînesRécap : Tableau de structsRécap : Compteur de fréquence des mots3Tableaux 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înes