Algorithmique - Groupes alternatifs de données
Préambule
La méthode exposée dans le chapitre Algorithmique - Présentation de la méthode est appliquée à des cas concrets dans ce chapitre et les suivants (Algorithmique - Données de phase, sauts de page ; Algorithmique - Les tableaux ; Algorithmique - Alternatives complexes). Chacun de ces cas présente la résolution d’une situation nouvelle. La plupart des problèmes rencontrés dans les applications "batch" sont ainsi traités. Dans ce chapitre, on va :
-
Programmer une application avec des ensembles de données présents 0 ou n fois.
-
Programmer une application avec plusieurs fichiers d’entrée.
Mise à jour du fichier "stock"
1. Sujet
Le programme à réaliser consiste à créer un fichier "nouveauStock" à partir de deux fichiers "ancienStock" et "mouvements".
Fichier ancienStock
Chaque enregistrement du fichier ancienStock contient trois champs.
-
Un numéro identifiant du produit
-
Un libellé donnant le nom du produit
-
Une quantité en stock
Le fichier ancienStock est trié par ordre de numéro de produit croissant. Il n’y a qu’un enregistrement par produit. Il n’est pas vide.
Structure correspondante :
typedef struct
{
char numero[3];
char libelle[21];
int quantite;
} PRODUIT;
Fichier mouvements
Un mouvement correspond à une entrée ou une sortie dans le stock. Une entrée ajoute une quantité de produit dans le stock. Une sortie soustrait une quantité de produit du stock.
Chaque enregistrement du fichier mouvements contient trois champs.
-
Un numéro identifiant du produit
-
Une quantité à ajouter (entrée) ou à soustraire (sortie) du stock du produit
-
Un code qui indique s’il s’agit d’une entrée (E) ou d’une sortie (S)
Le fichier est trié par ordre de numéro de produit croissant. Il peut y avoir 0 ou n enregistrements par produit.
Structure correspondante :
typedef struct
{
char numeroProduit[3];
int quantite;
char code;
} MOUVEMENT;
Fichier nouveauStock : les enregistrements du fichier nouveauStock ont la même structure que ceux du fichier ancienStock. Il y a autant de produits dans le fichier nouveauStock que dans le fichier ancienStock. Seule la quantité de chaque produit est mise à jour en fonction des mouvements éventuels qui le concernent.
Exemple
ancienStock mouvements
01 VIS 100 01 50 E
01 70 S
02 CLOUS 120 03
ECROUS 200 03 10 E
nouveauStock
01 VIS 80
02 CLOUS...