Vous êtes sur la page 1sur 7

#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