Votre ami Jef est un étudiant en économie à l'UCL. Ses cours d'économie lui ont donné l'idée de lancer son propre site d'e-commerce. Etant donné qu'il est passioné de livres et de bandes dessinées, il a décidé de commencer par une librairie en ligne, nommée "Amazonia" (j'espère que vous avez saisi la référence :-) ). Malheureusement, il n'est pas très calé en informatique... Mais il a entendu que vous suiviez un cours de programmation en C. Il fait donc appel à vous pour créer sa librairie en ligne.
Pour ce faire, vous allez représenter la librairie par une liste de produits classés par ordre alphabétique de nom, où chaque produit possède un prix unitaire et est présent (ou non) dans le stock en une certaine quantité.
Le site en ligne est représenté par la structure chaînée suivante :
struct shop { int count_products; // Le nombre de produits différents que propose le magasin struct product *first_product; // Un pointeur vers le premier produit double income; // Les revenus du magasin double stock_value; // La valeur du stock du magasin } ;
Un produit de cette structure chaînée est représenté par la structure suivante :
struct product { char *name; // Le nom du produit struct product *next; // Un pointeur vers le produit suivant double unit_price; // Le prix unitaire du produit int quantity; // La quantité de ce produit qu'il reste en stock } ;
Vous devez écrire deux fonctions :
La première fonction est la fonction add_product qui permet d'ajouter un produit au stock de la librairie. Ce produit doit être ajouté de sorte que les produits du stock restent dans l'ordre alphabétique. Si ce produit figure déjà dans liste (on complète le stock de la librairie), il faut uniquement augmenter la quantité de ce produit du stock : un produit ne peut être présent qu'une seule fois dans la liste. (Note : Si un produit existe déjà, on suppose que son prix ne change pas : on peut ignorer le dernier prix passé en argument.)
La deuxième fonction est la fonction buy_product qui simule l'achat d'une certaine quantité d'un produit. Si la quantité demandée est supérieure à la quantité du produit se trouvant dans le stock, aucun exemplaire n'est vendu et la fonction retourne 1. De plus, si le produit demandé n'est pas trouvé dans le stock, aucun exemplaire n'est vendu et on retourne 2. Conseil : pensez déjà au moment où votre site comportera des millions d'articles. Profitez pour cela de l'ordre alaphébtique des produits. Par contre, si le produit se trouve bien dans le stock en une quantité suffisante, on enlève du stock la quantité demandée du produit et on retourne 0.