@ -20,9 +20,8 @@ void affiche_client(void) {
printf ( " +----------------------------------------------------------------+ \n " ) ;
}
void ajouter_article_au_panier ( int numClient , int tRef [ ] , float tPoids [ ] , float tVol [ ] , float tPrixUnitaire [ ] ,
int tNumClient [ ] , float tCagnotte [ ] , int t Sus[ ] , int t LogArticle, int tLogClient ,
int tNumClient [ ] , float tCagnotte [ ] , int t LogArticle, int tLogClient ,
float volumeCoffre , float chargeMaximale , int tPanier [ ] , int tQuantite [ ] , int * tLogPanier , float budget ) {
int reference , quantite , articleIndex , clientIndex ;
@ -30,33 +29,24 @@ void ajouter_article_au_panier(int numClient, int tRef[], float tPoids[], float
printf ( " Entrez la référence de l'article : " ) ;
while ( scanf ( " %d " , & reference ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer une référence valide (nombre) : " ) ;
}
while ( getchar ( ) ! = ' \n ' ) ;
verifInt ( & reference ) ;
articleIndex = trouver_index_article ( reference , tRef , tLogArticle ) ;
while ( articleIndex = = - 1 ) {
printf ( " ERREUR : Article non trouvé. Veuillez entrer une référence valide : " ) ;
while ( scanf ( " %d " , & reference ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer une référence valide (nombre) : " ) ;
}
fprintf ( stderr , " \x1B [31mERREUR : Article non trouvé. Veuillez entrer une référence valide : \x1B [0m " ) ;
verifInt ( & reference ) ;
articleIndex = trouver_index_article ( reference , tRef , tLogArticle ) ;
}
printf ( " Entrez la quantité : " ) ;
while ( scanf ( " %d " , & quantite ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer une quantité valide (nombre) : " ) ;
}
while ( getchar ( ) ! = ' \n ' ) ;
verifInt ( & quantite ) ;
poidsTotal = tPoids [ articleIndex ] * quantite ;
volumeTotal = tVol [ articleIndex ] * quantite ;
montantTotal = tPrixUnitaire [ articleIndex ] * quantite ;
poidsTotal = tPoids [ articleIndex ] * ( float ) quantite ;
volumeTotal = tVol [ articleIndex ] * ( float ) quantite ;
montantTotal = tPrixUnitaire [ articleIndex ] * ( float ) quantite ;
if ( poidsTotal > chargeMaximale ) {
depassementCharge = poidsTotal - chargeMaximale ;
@ -70,21 +60,7 @@ void ajouter_article_au_panier(int numClient, int tRef[], float tPoids[], float
depassementBudget = montantTotal - budget ;
}
if ( depassementCharge | | depassementVolume | | depassementBudget ) {
printf ( " Attention : \n " ) ;
if ( depassementCharge ) {
printf ( " \t Dépassement de la charge autorisée de %.2f kg \n " , depassementCharge ) ;
}
if ( depassementVolume ) {
printf ( " \t Dépassement du volume autorisé de %.2f litres \n " , depassementVolume ) ;
}
if ( depassementBudget ) {
printf ( " \t Dépassement du budget autorisé de %.2f euros \n " , depassementBudget ) ;
}
printf ( " \n " ) ;
}
montantTotal = tPrixUnitaire [ articleIndex ] * quantite ;
montantTotal = tPrixUnitaire [ articleIndex ] * ( float ) quantite ;
clientIndex = trouver_index_client ( numClient , tNumClient , tLogClient ) ;
@ -102,46 +78,44 @@ void ajouter_article_au_panier(int numClient, int tRef[], float tPoids[], float
}
printf ( " \n " ) ;
printf ( " Référence : %d \n Quantité : %d \n " , reference , quantite ) ;
printf ( " Récap : \n " ) ;
printf ( " Réf Qté Poids Vol PrixU PoidsTot VolTot PrixTot Cagnotte \n " ) ;
printf ( " %d %d %.2f %.2f %.2f %.2f %.2f %.2f %.2f \n " ,
reference , quantite , tPoids [ articleIndex ] , tVol [ articleIndex ] ,
tPrixUnitaire [ articleIndex ] , poidsTotal , volumeTotal , montantTotal ,
tCagnotte [ clientIndex ] ) ;
printf ( " Prix total à payer: %.2f euros \n " , montantTotal ) ;
printf ( " Cagnotte totale : %.2f euros \n " , tCagnotte [ clientIndex ] ) ;
printf ( " Volume utilise : %.2f litres \n " , volumeTotal ) ;
printf ( " Volume restant : %.2f litres \n " , volumeCoffre - volumeTotal ) ;
printf ( " Charge Actuelle: %.2f kg \n " , poidsTotal ) ;
printf ( " Charge restante: %.2f kg \n " , chargeMaximale - poidsTotal ) ;
if ( depassementBudget < 0 | | depassementCharge < 0 | | depassementVolume < 0 ) {
printf ( " Référence : %d \n Quantité : %d \n " , reference , quantite ) ;
printf ( " Récap : \n " ) ;
printf ( " Réf Qté Poids Vol PrixU PoidsTot VolTot PrixTot Cagnotte \n " ) ;
printf ( " %d %d %.2f %.2f %.2f %.2f %.2f %.2f %.2f \n " ,
reference , quantite , tPoids [ articleIndex ] , tVol [ articleIndex ] ,
tPrixUnitaire [ articleIndex ] , poidsTotal , volumeTotal , montantTotal ,
tCagnotte [ clientIndex ] ) ;
printf ( " Prix total à payer: %.2f euros \n " , montantTotal ) ;
printf ( " Cagnotte totale : %.2f euros \n " , tCagnotte [ clientIndex ] ) ;
printf ( " Volume utilise : %.2f litres \n " , volumeTotal ) ;
printf ( " Volume restant : %.2f litres \n " , volumeCoffre - volumeTotal ) ;
printf ( " Charge Actuelle: %.2f kg \n " , poidsTotal ) ;
printf ( " Charge restante: %.2f kg \n " , chargeMaximale - poidsTotal ) ;
} else {
affiche_recap_panier ( tPanier , * tLogPanier , tRef , tPoids , tVol , tPrixUnitaire , tQuantite , tCagnotte , numClient , tNumClient , tLogClient , volumeCoffre , chargeMaximale , budget ) ;
}
}
void supprimer_article_du_panier ( int tPanier [ ] , int tQuantite [ ] , int * tLogPanier , float tCagnotte [ ] , int numClient , int tNumClient [ ] , int tLogClient , int tRef [ ] , float tPrixUnitaire [ ] ) {
int reference , articleIndex ;
printf ( " Entrez la référence de l'article à supprimer : " ) ;
while ( scanf ( " %d " , & reference ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer une référence valide (nombre) : " ) ;
}
while ( getchar ( ) ! = ' \n ' ) ;
verifInt ( & reference ) ;
articleIndex = trouver_index_article ( reference , t Ref, MAX_ARTICLES ) ;
articleIndex = trouver_index_article ( reference , tPanier , * tLogPanier ) ;
while ( articleIndex = = - 1 ) {
printf ( " Article non trouvé dans le panier. Veuillez entrer une référence valide : " ) ;
while ( scanf ( " %d " , & reference ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer une référence valide (nombre) : " ) ;
}
articleIndex = trouver_index_article ( reference , tRef , MAX_ARTICLES ) ;
fprintf ( stderr , " \x1B [31mERREUR : Article non trouvé dans le panier. Veuillez entrer une référence valide : \x1B [0m " ) ;
verifInt ( & reference ) ;
articleIndex = trouver_index_article ( reference , tPanier , * tLogPanier ) ;
}
supprimer_article ( tPanier , tQuantite , tLogPanier , reference , numClient , tNumClient , tLogClient , tRef , tPrixUnitaire , tCagnotte ) ;
printf ( " Article supprimé du panier avec succès.\n " ) ;
printf ( " \033 [32m Article supprimé du panier avec succès.\033 [0m \n " ) ;
}
@ -153,12 +127,6 @@ void affiche_recap_panier(int tPanier[], int tLogPanier, int tRef[], float tPoid
float poidsTotal = 0 , volumeTotal = 0 , montantTotal = 0 , prixArticle = 0 , poidsArticle = 0 , volumeArticle = 0 ;
char attentionDepassement [ 200 ] = " " ;
printf ( " Contenu du panier : " ) ;
for ( int i = 0 ; i < tLogPanier ; i + + ) {
printf ( " %d " , tPanier [ i ] ) ;
}
printf ( " \n " ) ;
printf ( " Récap : \n " ) ;
printf ( " Réf Qté Poids Vol PrixU PoidsTot VolTot PrixTot \n " ) ;
@ -173,11 +141,11 @@ void affiche_recap_panier(int tPanier[], int tLogPanier, int tRef[], float tPoid
printf ( " %d \t %d \t %.2f \t %.2f \t %.2f \t %.2f \t %.2f \t %.2f \n " ,
reference , quantite , poidsArticle , volumeArticle ,
prixArticle , poidsArticle * quantite , volumeArticle * quantite , prixArticle * quantite ) ;
prixArticle , poidsArticle * ( float ) quantite , volumeArticle * ( float ) quantite , prixArticle * ( float ) quantite ) ;
poidsTotal + = poidsArticle * quantite ;
volumeTotal + = volumeArticle * quantite ;
montantTotal + = prixArticle * quantite ;
poidsTotal + = poidsArticle * ( float ) quantite ;
volumeTotal + = volumeArticle * ( float ) quantite ;
montantTotal + = prixArticle * ( float ) quantite ;
if ( poidsTotal > chargeMaximale ) {
float depassement = poidsTotal - chargeMaximale ;
@ -207,7 +175,8 @@ void affiche_recap_panier(int tPanier[], int tLogPanier, int tRef[], float tPoid
printf ( " Charge Actuelle: %.2f kg \n " , poidsTotal ) ;
if ( strlen ( attentionDepassement ) > 0 ) {
printf ( " Attention : %s " , attentionDepassement ) ;
printf ( " Attention : \n " ) ;
printf ( " %s " , attentionDepassement ) ;
}
}
@ -215,19 +184,14 @@ void configurer_session_client(int tNumClient[], int tLogClient, double *budget,
int indexClient , choixBudget = 0 ;
printf ( " Veuillez saisir votre numéro de client : " ) ;
while ( scanf ( " %d " , numClient ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer un numéro de client valide : " ) ;
}
verifInt ( numClient ) ;
indexClient = trouver_index_client ( * numClient , tNumClient , tLogClient ) ;
while ( indexClient = = - 1 ) {
printf ( " ERREUR : Veuillez entrer un numéro de client valide : " ) ;
while ( scanf ( " %d " , numClient ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer un numéro de client valide : " ) ;
}
fprintf ( stderr , " \x1B [31mERREUR : Veuillez entrer un numéro de client valide : \x1B [0m " ) ;
verifInt ( numClient ) ;
indexClient = trouver_index_client ( * numClient , tNumClient , tLogClient ) ;
}
@ -235,28 +199,22 @@ void configurer_session_client(int tNumClient[], int tLogClient, double *budget,
printf ( " Voulez-vous définir un budget à ne pas dépasser ? (1 pour Oui, 0 pour Non) : " ) ;
while ( scanf ( " %d " , & choixBudget ) ! = 1 | | ( choixBudget ! = 0 & & choixBudget ! = 1 ) ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf( " ERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non : " ) ;
f printf( stderr , " \x1B [31m ERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non :\x1B [0m " ) ;
}
if ( choixBudget = = 1 ) {
printf ( " Entrez le budget à ne pas dépasser : " ) ;
while ( scanf ( " %lf " , budget ) ! = 1 | | * budget < = 0 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf( " ERREUR : Veuillez entrer un budget valide (nombre positif) : " ) ;
f printf( stderr , " \x1B [31m ERREUR : Veuillez entrer un budget valide (nombre positif) :\x1B [0m " ) ;
}
}
printf ( " Veuillez saisir la taille disponible du véhicule (en litres) : " ) ;
while ( scanf ( " %f " , volumeCoffre ) ! = 1 | | * volumeCoffre < = 0 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer une taille de coffre valide (en litres) : " ) ;
}
verifFloat ( volumeCoffre ) ;
printf ( " Veuillez saisir la charge maximale autorisée (en kg) : " ) ;
while ( scanf ( " %f " , chargeMaximale ) ! = 1 | | * chargeMaximale < = 0 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer une charge maximale valide (en kg) : " ) ;
}
verifFloat ( chargeMaximale ) ;
}
void modifier_quantite_article_panier ( int tPanier [ ] , int tQuantite [ ] , int * tLogPanier , float tCagnotte [ ] , int numClient , float tPrixUnitaire [ ] , int tRef [ ] , int tLogClient , int tNumClient [ ] ) {
@ -265,30 +223,18 @@ void modifier_quantite_article_panier(int tPanier[], int tQuantite[], int *tLogP
float prixArticle = 0 , ancienneQuantite = 0 ;
printf ( " Entrez la référence de l'article : " ) ;
while ( scanf ( " %d " , & reference ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer une référence valide (nombre) : " ) ;
}
while ( getchar ( ) ! = ' \n ' ) ;
verifInt ( & reference ) ;
articleIndex = trouver_index_article ( reference , tPanier , * tLogPanier ) ;
while ( articleIndex = = - 1 ) {
printf ( " Article non trouvé dans le panier. Veuillez entrer une référence valide : " ) ;
while ( scanf ( " %d " , & reference ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer une référence valide (nombre) : " ) ;
}
fprintf ( stderr , " \x1B [31mERREUR : Article non trouvé dans le panier. Veuillez entrer une référence valide : \x1B [0m " ) ;
verifInt ( & reference ) ;
articleIndex = trouver_index_article ( reference , tPanier , * tLogPanier ) ;
}
printf ( " Entrez la quantité : " ) ;
while ( scanf ( " %d " , & quantite ) ! = 1 | | quantite < = 0 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer une quantité valide (nombre) : " ) ;
}
while ( getchar ( ) ! = ' \n ' ) ;
verifInt ( & quantite ) ;
// Mettre à jour la cagnotte en fonction du changement de quantité
prixArticle = tPrixUnitaire [ trouver_index_article ( reference , tRef , MAX_ARTICLES ) ] ;
@ -298,7 +244,7 @@ void modifier_quantite_article_panier(int tPanier[], int tQuantite[], int *tLogP
tQuantite [ articleIndex ] = quantite ;
printf ( " Quantité modifiée avec succès.\n " ) ;
printf ( " \033 [32m Quantité modifiée avec succès.\033 [0m \n " ) ;
}
void reinitialiser_panier ( int tPanier [ ] , int tQuantite [ ] , int * tLogPanier , float tCagnotte [ ] , int numClient , int tNumClient [ ] , int tLogClient , int tRef [ ] , float tPrixUnitaire [ ] ) {
@ -306,48 +252,63 @@ void reinitialiser_panier(int tPanier[], int tQuantite[], int *tLogPanier, float
supprimer_article ( tPanier , tQuantite , tLogPanier , tPanier [ i ] , numClient , tNumClient , tLogClient , tRef , tPrixUnitaire , tCagnotte ) ;
}
* tLogPanier = 0 ;
printf ( " \033 [32mLe panier a été réinitialisé avec succès. \033 [0m \n " ) ;
}
void deduire_cagnotte ( int numClient , float montant , int tNumClient [ ] , float tCagnotte [ ] , int tLogClient , int tSus [ ] ) {
int clientIndex = - 1 ;
for ( int i = 0 ; i < tLogClient ; i + + ) {
if ( tNumClient [ i ] = = numClient ) {
clientIndex = i ;
break ;
}
}
void deduire_cagnotte ( int numClient , float montant , int tNumClient [ ] , float tCagnotte [ ] , int tLogClient ) {
int clientIndex ;
clientIndex = trouver_index_client ( numClient , tNumClient , tLogClient ) ;
if ( clientIndex = = - 1 ) {
printf( " Client non trouvé. Impossible de déduire la cagnotte.\ n" ) ;
fprintf ( stderr , " \x1B [31mERREUR : Client non trouvé. Impossible de déduire la cagnotte. \x1B [0m \n " ) ;
return ;
}
if ( tCagnotte [ clientIndex ] < montant ) {
printf( " Cagnotte insuffisante. Impossible de déduire la cagnotte.\ n" ) ;
f printf( stderr , " \x1B [31mERREUR : Cagnotte insuffisante. Impossible de déduire la cagnotte.\ x1B[0m \ n " ) ;
return ;
}
tCagnotte [ clientIndex ] - = montant ;
printf ( " Montant déduit de la cagnotte avec succès. \n " ) ;
printf ( " \033 [32mMontant déduit de la cagnotte avec succès. \033 [0m \n " ) ;
printf ( " Il vous reste %.2f euros dans votre cagnotte. \n " , tCagnotte [ clientIndex ] ) ;
}
void quitter_application ( int tPanier [ ] , int tLogPanier , int tRef [ ] , float tPoid [ ] , float tVol [ ] ,
float tPrixUnitaire [ ] , int tQuantite [ ] , float tCagnotte [ ] , int numClient ,
int tNumClient [ ] , int tLogClient , float budget , int tSus [ ] ) {
float tPrixUnitaire [ ] , int tQuantite [ ] , float tCagnotte [ ] , int numClient ,
int tNumClient [ ] , int tLogClient , float budget , int tSus [ ] , float volumeCoffre , float chargeMaximale ) {
int reference , articleIndex , quantite , clientIndex , choixCagnotte = 0 ;
float montantTotal = 0 , prixArticle = 0 , montantDeduction = 0 , depassement = 0 ;
float montantTotal = 0 , prixArticle = 0 , montantDeduction = 0 , depassement = 0 , poidsTotal = 0 , volumeTotal = 0 , poidsArticle = 0 , volumeArticle = 0 ;
char attentionDepassement [ 200 ] = " " ;
for ( int i = 0 ; i < tLogPanier ; i + + ) {
reference = tPanier [ i ] ;
articleIndex = trouver_index_article ( reference , tRef , MAX_ARTICLES ) ;
poidsArticle = tPoid [ articleIndex ] ;
volumeArticle = tVol [ articleIndex ] ;
prixArticle = tPrixUnitaire [ articleIndex ] ;
quantite = tQuantite [ i ] ;
montantTotal + = prixArticle * quantite ;
poidsTotal + = poidsArticle * ( float ) quantite ;
volumeTotal + = volumeArticle * ( float ) quantite ;
montantTotal + = prixArticle * ( float ) quantite ;
if ( poidsTotal > chargeMaximale ) {
depassement = poidsTotal - chargeMaximale ;
char message [ 100 ] ;
sprintf ( message , " Dépassement de la charge autorisée de %.2f kg. \n " , depassement ) ;
strcat ( attentionDepassement , message ) ;
}
if ( volumeTotal > volumeCoffre ) {
depassement = volumeTotal - volumeCoffre ;
char message [ 100 ] ;
sprintf ( message , " Dépassement du volume autorisé de %.2f litres. \n " , depassement ) ;
strcat ( attentionDepassement , message ) ;
}
if ( budget > 0 & & montantTotal > budget ) {
depassement = montantTotal - budget ;
@ -359,71 +320,97 @@ void quitter_application(int tPanier[], int tLogPanier, int tRef[], float tPoid[
clientIndex = trouver_index_client ( numClient , tNumClient , tLogClient ) ;
if ( tSus [ clientIndex ] = = 1 ) {
printf ( " Vous ne pourrez pas utiliser votre cagnotte car votre carte est suspendu. \n " ) ;
}
printf ( " Prix total à payer: %.2f euros \n " , montantTotal ) ;
if ( budget > 0 ) {
printf ( " Budget : %.2f euros \n " , budget ) ;
}
printf ( " Volume utilise : %.2f litres \n " , volumeTotal ) ;
printf ( " Charge Actuelle: %.2f kg \n " , poidsTotal ) ;
if ( volumeTotal > volumeCoffre ) {
printf ( " Attention : %s " , attentionDepassement ) ;
printf ( " Vous ne pourrez pas payer. De plus vous ne pourrez pas utiliser votre cagnotte car votre coffre est plein. \n " ) ;
printf ( " Payement non effectué. \n " ) ;
return ;
}
if ( poidsTotal > chargeMaximale ) {
printf ( " Attention : %s " , attentionDepassement ) ;
printf ( " Vous ne pourrez pas payer. De plus vous ne pourrez pas utiliser votre cagnotte car votre coffre est plein. \n " ) ;
printf ( " Payement non effectué. \n " ) ;
return ;
}
if ( tSus [ clientIndex ] = = 1 & & budget > 0 & & montantTotal > budget ) {
printf ( " Attention : %s " , attentionDepassement ) ;
printf ( " Vous ne pourrez pas payer. De plus vous ne pourrez pas utiliser votre cagnotte car votre carte est suspendu. \n " ) ;
printf ( " Payement non effectué. \n " ) ;
return ;
}
if ( tSus [ clientIndex ] = = 1 & & budget > 0 & & montantTotal < budget ) {
printf ( " Vous ne pourrez pas utiliser votre cagnotte car votre carte est suspendu. \n " ) ;
printf ( " Payement effectué. \n " ) ;
return ;
}
if ( tSus [ clientIndex ] = = 1 ) {
printf ( " Vous ne pourrez pas utiliser votre cagnotte car votre carte est suspendu. \n " ) ;
printf ( " Payement effectué. \n " ) ;
return ;
}
if ( tSus [ clientIndex ] = = 0 ) {
printf ( " Cagnotte totale : %.2f euros \n " , tCagnotte [ clientIndex ] ) ;
}
if ( budget > 0 & & montantTotal > budget & & tCagnotte [ clientIndex ] < ( montantTotal - budget ) ) {
printf ( " Attention : %s " , attentionDepassement ) ;
printf ( " Vous ne pourrez pas payer. De plus vous n'avez pas assez dans votre cagnotte pour la déduire et payer \n " ) ;
printf ( " Montant de votre cagnotte %.2f \n " , tCagnotte [ clientIndex ] ) ;
}
if ( budget > 0 & & montantTotal > budget & & montantTotal < budget + tCagnotte [ clientIndex ] ) {
printf ( " Attention : %s " , attentionDepassement ) ;
printf ( " Vous ne pourrez pas payer, mais vous avez suffisamment dans votre cagnotte pour payer. \n " ) ;
printf ( " Montant de votre cagnotte %.2f \n " , tCagnotte [ clientIndex ] ) ;
printf ( " Vous ne pourrez pas payer, mais vous avez suffisamment dans votre cagnotte pour déduire le prix. \n " ) ;
printf ( " Voulez-vous déduire de votre cagnotte avant de quitter ? (1 pour Oui, 0 pour Non) : " ) ;
while ( scanf ( " %d " , & choixCagnotte ) ! = 1 | | ( choixCagnotte ! = 0 & & choixCagnotte ! = 1 ) ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non : " ) ;
f printf( stderr , " \x1B [31m ERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non :\x1B [0m " ) ;
}
if ( choixCagnotte = = 1 ) {
printf ( " Entrez le montant à déduire de votre cagnotte : " ) ;
while ( scanf ( " %f " , & montantDeduction ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer un montant valide (nombre) : " ) ;
}
while ( getchar ( ) ! = ' \n ' ) ;
verifFloat ( & montantDeduction ) ;
while ( montantDeduction < ( montantTotal - budget ) ) {
printf ( " ERREUR : Vous devez déduire suffisamment pour payer l'intégralité du montant dû. \n " ) ;
fprintf ( stderr , " \x1B [31mERREUR : Vous devez déduire suffisamment pour payer l'intégralité du montant dû. \x1B [0m \n " ) ;
printf ( " Montant minimum à déduire pour payer : %.2f \n " , montantTotal - budget ) ;
printf ( " Entrez le montant à déduire de votre cagnotte : " ) ;
while ( scanf ( " %f " , & montantDeduction ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer un montant valide (nombre) : " ) ;
}
while ( getchar ( ) ! = ' \n ' ) ;
verifFloat ( & montantDeduction ) ;
}
deduire_cagnotte ( numClient , montantDeduction , tNumClient , tCagnotte , tLogClient , tSus ) ;
printf ( " Il vous reste %.2f euros dans votre cagnotte. \n " , tCagnotte [ clientIndex ] ) ;
deduire_cagnotte ( numClient , montantDeduction , tNumClient , tCagnotte , tLogClient ) ;
printf ( " Payement effectué. \n " ) ;
return ;
} else {
printf ( " Payement non effectué. \n " ) ;
return ;
}
}
printf ( " Voulez-vous déduire de votre cagnotte avant de quitter ? (1 pour Oui, 0 pour Non) : " ) ;
while ( scanf ( " %d " , & choixCagnotte ) ! = 1 | | ( choixCagnotte ! = 0 & & choixCagnotte ! = 1 ) ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf( " ERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non : " ) ;
f printf( stderr , " \x1B [31m ERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non :\x1B [0m " ) ;
}
if ( choixCagnotte = = 1 ) {
printf ( " Entrez le montant à déduire de votre cagnotte : " ) ;
while ( scanf ( " %f " , & montantDeduction ) ! = 1 ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf ( " ERREUR : Veuillez entrer un montant valide (nombre) : " ) ;
}
while ( getchar ( ) ! = ' \n ' ) ;
deduire_cagnotte ( numClient , montantDeduction , tNumClient , tCagnotte , tLogClient , tSus ) ;
printf ( " Il vous reste %.2f euros dans votre cagnotte. \n " , tCagnotte [ clientIndex ] ) ;
verifFloat ( & montantDeduction ) ;
deduire_cagnotte ( numClient , montantDeduction , tNumClient , tCagnotte , tLogClient ) ;
printf ( " Payement effectué. \n " ) ;
} else {
printf ( " Payement effectué. \n " ) ;
}
}
@ -432,16 +419,16 @@ void menu_client(int *choix) {
printf ( " Vous choisissez: " ) ;
while ( scanf ( " %d " , choix ) ! = 1 | | * choix < 0 | | * choix > 9 | | ( * choix > 6 & & * choix < 9 ) ) {
while ( getchar ( ) ! = ' \n ' ) ;
printf( " ERREUR : Veuillez entrer un choix valide : " ) ;
f printf( stderr , " \x1B [31m ERREUR : Veuillez entrer un choix valide :\x1B [0m " ) ;
}
}
void global_client ( void ) {
int choix , tRef [ MAX_ARTICLES ] , tNumClient [ MAX_CLIENTS ] , tSus [ MAX_CLIENTS ] , tLogArticle , tLogClient ,
numClient , tQuantite [ MAX_ARTICLES ] , tPanier [ MAX_ARTICLES ] , tLogPanier = 0 ;
numClient , tQuantite [ MAX_ARTICLES ] , tPanier [ MAX_ARTICLES ] , tLogPanier = 0 ;
float tPoids [ MAX_ARTICLES ] , tVol [ MAX_ARTICLES ] , tPrixUnitaire [ MAX_ARTICLES ] , tCagnotte [ MAX_CLIENTS ] ,
volumeCoffre , chargeMaximale ;
volumeCoffre , chargeMaximale ;
double budget = - 1.0 ;
@ -462,7 +449,7 @@ void global_client(void) {
break ;
case 3 :
ajouter_article_au_panier ( numClient , tRef , tPoids , tVol , tPrixUnitaire , tNumClient , tCagnotte ,
t Sus, t LogArticle, tLogClient , volumeCoffre , chargeMaximale , tPanier , tQuantite , & tLogPanier , budget ) ;
t LogArticle, tLogClient , volumeCoffre , chargeMaximale , tPanier , tQuantite , & tLogPanier , budget ) ;
break ;
case 4 :
supprimer_article_du_panier ( tPanier , tQuantite , & tLogPanier , tCagnotte , numClient , tNumClient , tLogClient , tRef , tPrixUnitaire ) ;
@ -474,13 +461,12 @@ void global_client(void) {
break ;
case 6 :
reinitialiser_panier ( tPanier , tQuantite , & tLogPanier , tCagnotte , numClient , tNumClient , tLogClient , tRef , tPrixUnitaire ) ;
printf ( " Le panier a été réinitialisé. \n " ) ;
break ;
case 9 :
quitter_application ( tPanier , tLogPanier , tRef , tPoids , tVol , tPrixUnitaire , tQuantite , tCagnotte , numClient , tNumClient , tLogClient , budget , tSus );
quitter_application ( tPanier , tLogPanier , tRef , tPoids , tVol , tPrixUnitaire , tQuantite , tCagnotte , numClient , tNumClient , tLogClient , budget , tSus , volumeCoffre , chargeMaximale );
sauvegarde_clients ( tNumClient , tCagnotte , tSus , tLogClient ) ;
printf ( " Au revoir ! \n " ) ;
return ;
}
} while ( choix ! = 9 ) ;
}
}