0% ont trouvé ce document utile (0 vote)
31 vues7 pages

Calcul des pourcentages d'ingrédients

Transféré par

s7405342
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
31 vues7 pages

Calcul des pourcentages d'ingrédients

Transféré par

s7405342
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

#include <stdio.

h>

// Définition des constantes du problème


#define TOLERANCE_EM 100.0
#define TOLERANCE_CB 0.5
#define MIN_X 50
#define MAX_X 70
#define MIN_Y 20
#define MAX_Y 30
#define MIN_Z 5
#define MAX_Z 15

// Déclaration des fonctions auxiliaires


Double calculer_EM(int x, int y, int z) ; // Calcule la valeur de EM en fonction de x, y et z
Double calculer_CB(int x, int y, int z) ; // Calcule la valeur de CB en fonction de x, y et z
Int verifier_contraintes(int x, int y, int z, double EM, double CB) ; // Vérifie si les contraintes
sont respectées
Void afficher_solution(int x, int y, int z, double EM, double CB) ; // Affiche la solution
trouvée
Void afficher_erreur(char *message) ; // Affiche un message d’erreur et quitte le programme

Int main(void) {
Int x ; // Pourcentage de l’ingrédient X
Int y ; // Pourcentage de l’ingrédient Y
Int z ; // Pourcentage de l’ingrédient Z
Double EM ; // Indicateur de qualité EM
Double CB ; // Indicateur de qualité CB

// Lecture des données entrées par l’utilisateur


Printf(« Entrez les pourcentages de X, Y et Z : « ) ;
If (scanf(« %u %u %u », &x, &y, &z) != 3) { // Vérification du nombre de valeurs lues
Afficher_erreur(« Erreur de lecture des données ») ;
}

// Validation des données entrées par l’utilisateur


If (x < MIN_X || x > MAX_X) { // Vérification de la borne de x
Afficher_erreur(« Le pourcentage de X doit être compris entre 50 et 70 ») ;
}
If (y < MIN_Y || y > MAX_Y) { // Vérification de la borne de y
Afficher_erreur(« Le pourcentage de Y doit être compris entre 20 et 30 ») ;
}
If (z < MIN_Z || z > MAX_Z) { // Vérification de la borne de z
Afficher_erreur(« Le pourcentage de Z doit être compris entre 5 et 15 ») ;
}
If (x + y + z != 100) { // Vérification de la somme des pourcentages
Afficher_erreur(« La somme des pourcentages doit être égale à 100 ») ;
}

// Calcul des indicateurs de qualité


EM = calculer_EM(x, y, z) ;
CB = calculer_CB(x, y, z) ;

// Vérification des contraintes


If (verifier_contraintes(x, y, z, EM, CB)) {
// Affichage de la solution
Afficher_solution(x, y, z, EM, CB) ;
} else {
// Affichage du message d’erreur
Printf(« Aucune solution trouvée dans les intervalles spécifiés.\n ») ;
}

Return 0 ;
}

// Définition de la fonction qui calcule EM


Double calculer_EM(int x, int y, int z) {
Return x * 3300 / 5 + y * 2550 / 100 + z * 1580 / 100 ;
}

// Définition de la fonction qui calcule CB


Double calculer_CB(int x, int y, int z) {
Return y * x / 5 + y * 49 / 5 + z * 15 / 100 ;
}

// Définition de la fonction qui vérifie les contraintes


Int verifier_contraintes(int x, int y, int z, double EM, double CB) {
Return (EM >= 2768 – TOLERANCE_EM) && (EM <= 2968 + TOLERANCE_EM) &&
(CB >= 16.5 – TOLERANCE_CB) && (CB <= 17.5 + TOLERANCE_CB) ;
}

// Définition de la fonction qui affiche la solution


Void afficher_solution(int x, int y, int z, double EM, double CB) {
Printf(« Solution trouvée:\n ») ;
Printf(« X : %d%%, Y : %d%%, Z : %d%%\n », x, y, z) ;
Printf(« EM : %.2f, CB : %.2f\n », EM, CB) ;
}

// Définition de la fonction qui affiche un message d’erreur et quitte le programme


Void afficher_erreur(char *message) {
Fprintf(stderr, « %s\n », message) ; // Affichage sur la sortie d’erreur standard
Exit(EXIT_FAILURE) ; // Arrêt du programme avec un code d’erreur
}

#include <stdio.h>

Int main() {
Double tolerance_EM = 100.0 ;
Double tolerance_CB = 0.5 ;

For (int x = 50 ; x <= 70 ; x++) {


For (int y = 20 ; y <= 30 ; y++) {
For (int z = 5 ; z <= 15 ; z++) {
Double EM = x * 3300 / 5 + y * 2550 / 100 + z * 1580 / 100 ;
Double CB = y * x / 5 + y * 49 / 5 + z * 15 / 100 ;

If ((EM >= 2768 – tolerance_EM) && (EM <= 2968 + tolerance_EM) &&
(CB >= 16.5 – tolerance_CB) && (CB <= 17.5 + tolerance_CB) &&
(x + y + z == 100)) {
Printf(« Solution trouvée:\n ») ;
Printf(« X : %d%%, Y : %d%%, Z : %d%%\n », x, y, z) ;
Printf(« EM : %.2f, CB : %.2f\n », EM, CB) ;
Return 0 ; // Terminer le programme après avoir trouvé une solution
}
}
}
}

Printf(« Aucune solution trouvée dans les intervalles spécifiés.\n ») ;


Return 0 ;
}

#include <stdio.h>

// Définition des constantes du problème


#define TOLERANCE_EM 100.0
#define TOLERANCE_CB 0.5

// Déclaration des fonctions auxiliaires


Double calculer_EM(int x, int y, int z) ; // Calcule la valeur de EM en fonction de x, y et z
Double calculer_CB(int x, int y, int z) ; // Calcule la valeur de CB en fonction de x, y et z
Int verifier_contraintes(int x, int y, int z, double EM, double CB) ; // Vérifie si les contraintes
sont respectées
Void afficher_solution(int x, int y, int z, double EM, double CB) ; // Affiche la solution
trouvée

Int main(void) {
Int x ; // Pourcentage de l’ingrédient X
Int y ; // Pourcentage de l’ingrédient Y
Int z ; // Pourcentage de l’ingrédient Z
Double EM ; // Indicateur de qualité EM
Double CB ; // Indicateur de qualité CB
// Parcours de toutes les valeurs possibles de x, y et z
For (x = 1 ; x <= 100 ; x++) {
For (y = 1 ; y <= 100 ; y++) {
For (z = 1 ; z <= 100 ; z++) {
// Calcul des indicateurs de qualité
EM = calculer_EM(x, y, z) ;
CB = calculer_CB(x, y, z) ;

// Vérification des contraintes


If (verifier_contraintes(x, y, z, EM, CB)) {
// Affichage de la solution
Afficher_solution(x, y, z, EM, CB) ;
}
}
}
}

Return 0 ;
}

// Définition de la fonction qui calcule EM


Double calculer_EM(int x, int y, int z) {
Return x * 3300 / 5 + y * 2550 / 100 + z * 1580 / 100 ;
}

// Définition de la fonction qui calcule CB


Double calculer_CB(int x, int y, int z) {
Return y * x / 5 + y * 49 / 5 + z * 15 / 100 ;
}
// Définition de la fonction qui vérifie les contraintes
Int verifier_contraintes(int x, int y, int z, double EM, double CB) {
Return (EM >= 2768 – TOLERANCE_EM) && (EM <= 2968 + TOLERANCE_EM) &&
(CB >= 16.5 – TOLERANCE_CB) && (CB <= 17.5 + TOLERANCE_CB) &&
(x + y + z == 100) ;
}

// Définition de la fonction qui affiche la solution


Void afficher_solution(int x, int y, int z, double EM, double CB) {
Printf(« Solution trouvée:\n ») ;
Printf(« X : %d%%, Y : %d%%, Z : %d%%\n », x, y, z) ;
Printf(« EM : %.2f, CB : %.2f\n », EM, CB) ;
}

Vous aimerez peut-être aussi