Bénéfice maxi
Résolu/Fermé
Utilisateur anonyme
-
1 mars 2013 à 22:45
walidovich_85 Messages postés 608 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 25 octobre 2015 - 3 mars 2013 à 16:15
walidovich_85 Messages postés 608 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 25 octobre 2015 - 3 mars 2013 à 16:15
A voir également:
- Bénéfice maxi
- Maxi compte - Télécharger - Comptabilité & Facturation
- Waze vitesse maxi - Guide
- Mappy maxi e738 mise à jour ✓ - Forum GPS
- Comment calculer un bénéfice en pourcentage - Forum Logiciels
- Cable antenne tv longueur maxi ✓ - Forum TV & Vidéo
13 réponses
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
2 mars 2013 à 05:15
2 mars 2013 à 05:15
bonjour,
je pense si bien compris ta demande, c'est que tu attend un nombre d'heure de travail < 390.
si tu fait le calcul, avec nbPapierPeint et nbPeinture =20, tu trouvera nbHeureTravail =400 > 390 et argentInvestie = 11200 < 12000; alors, la condition pour sortir de la boucle while était avec celle de nbHeureTravail.
si non, je pense que je n'ai pas bien compris ta question.
je pense si bien compris ta demande, c'est que tu attend un nombre d'heure de travail < 390.
si tu fait le calcul, avec nbPapierPeint et nbPeinture =20, tu trouvera nbHeureTravail =400 > 390 et argentInvestie = 11200 < 12000; alors, la condition pour sortir de la boucle while était avec celle de nbHeureTravail.
si non, je pense que je n'ai pas bien compris ta question.
Utilisateur anonyme
2 mars 2013 à 11:07
2 mars 2013 à 11:07
c'est sa, il faut que les deux soit inférieur, le nombre d'heure de travail doit être inférieur ou égale à 390 et l'argent investi inférieur ou égal à 12 000
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
2 mars 2013 à 18:07
2 mars 2013 à 18:07
bonjour,
alors tt simplement, il faut prendre la valeur final moins un, c a dire, avant la fin du programme:
//Recalcul des données avec l'avant derniere valeur des varibales
nbPapierPeint =nbPapierPeint -1;
nbPeinture = nbPeinture -1;
//Calcul des données:
nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
//Affichage
systeme.out.pri...(...)
bonne chance
alors tt simplement, il faut prendre la valeur final moins un, c a dire, avant la fin du programme:
//Recalcul des données avec l'avant derniere valeur des varibales
nbPapierPeint =nbPapierPeint -1;
nbPeinture = nbPeinture -1;
//Calcul des données:
nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
//Affichage
systeme.out.pri...(...)
bonne chance
Utilisateur anonyme
2 mars 2013 à 19:13
2 mars 2013 à 19:13
je doit pas enlever le while?
car si je fait comme tu a dit, mettre - 1, g des valeurs négatives
car si je fait comme tu a dit, mettre - 1, g des valeurs négatives
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
2 mars 2013 à 19:28
2 mars 2013 à 19:28
non!!!!
je voulais dire, apré le while, il faut décrémenter les valeurs finales de tes 2 variables nbPapierPeint et nbPeinture et puis recalculer les autres données pour avoir enfin tes conditions nbHeureTravail < 390 et argentInvestie < 12000 bien remplies.
rend moi compte si je ne suis pas clair.
je voulais dire, apré le while, il faut décrémenter les valeurs finales de tes 2 variables nbPapierPeint et nbPeinture et puis recalculer les autres données pour avoir enfin tes conditions nbHeureTravail < 390 et argentInvestie < 12000 bien remplies.
rend moi compte si je ne suis pas clair.
Utilisateur anonyme
2 mars 2013 à 20:03
2 mars 2013 à 20:03
J'ai fais sa mais sa marche pas:
while (nbHeureTravail < 390 && argentInvestie < 12000)
{
nbPapierPeint = nbPapierPeint - 1;
nbPeinture = nbPeinture - 1;
nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
beneficeMaximal = (nbPapierPeint * 45) + (nbPeinture * 40);
}
while (nbHeureTravail < 390 && argentInvestie < 12000)
{
nbPapierPeint = nbPapierPeint - 1;
nbPeinture = nbPeinture - 1;
nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
beneficeMaximal = (nbPapierPeint * 45) + (nbPeinture * 40);
}
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 2/03/2013 à 20:12
Modifié par walidovich_85 le 2/03/2013 à 20:12
bonsoir,
voila la partie du code qui t'intéresse:
while (nbHeureTravail < 390 && argentInvestie < 12000)
{
nbPapierPeint = nbPapierPeint + 1;
nbPeinture = nbPeinture + 1;
nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
beneficeMaximal = (nbPapierPeint * 45) + (nbPeinture * 40);
}
//Décrémenter les valeurs finales (c a dire, au lieu de 20, on va utiliser 19)
nbPapierPeint = nbPapierPeint - 1;
nbPeinture = nbPeinture - 1;
//Recalcul des données à afficher
nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
beneficeMaximal = (nbPapierPeint * 45) + (nbPeinture * 40);
//Affichage des données
System.out.println("Le nombre de lots de rouleaux de papier peint est de " + nbPapierPeint);
System.out.println("Le nombre de lots de pots de peinture est de " + nbPeinture);
System.out.println("Le bénéfice maximal est de " + beneficeMaximal);
}
ça répond à ta demande?
voila la partie du code qui t'intéresse:
while (nbHeureTravail < 390 && argentInvestie < 12000)
{
nbPapierPeint = nbPapierPeint + 1;
nbPeinture = nbPeinture + 1;
nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
beneficeMaximal = (nbPapierPeint * 45) + (nbPeinture * 40);
}
//Décrémenter les valeurs finales (c a dire, au lieu de 20, on va utiliser 19)
nbPapierPeint = nbPapierPeint - 1;
nbPeinture = nbPeinture - 1;
//Recalcul des données à afficher
nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
beneficeMaximal = (nbPapierPeint * 45) + (nbPeinture * 40);
//Affichage des données
System.out.println("Le nombre de lots de rouleaux de papier peint est de " + nbPapierPeint);
System.out.println("Le nombre de lots de pots de peinture est de " + nbPeinture);
System.out.println("Le bénéfice maximal est de " + beneficeMaximal);
}
ça répond à ta demande?
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
2 mars 2013 à 20:33
2 mars 2013 à 20:33
ahh ok,
pr moi, je ne comprenais pas exactement les données, mais puisque tu veux une qu'il soit 19 et l'autre 20, alors il faut séparer les conditions dans while.
autrement, il faut deux boucles while, chaqu'une pour une variable.
est ce c'est ça?
pr moi, je ne comprenais pas exactement les données, mais puisque tu veux une qu'il soit 19 et l'autre 20, alors il faut séparer les conditions dans while.
autrement, il faut deux boucles while, chaqu'une pour une variable.
est ce c'est ça?
Utilisateur anonyme
2 mars 2013 à 20:35
2 mars 2013 à 20:35
Je pense
l'énoncé c'est que je doit trouver le nombre de rouleau de papier peint et le nombre de post de peinture sachant que cela ne doit pas dépaser le nombre d'heure de travail (390) et le capital (12 000)
l'énoncé c'est que je doit trouver le nombre de rouleau de papier peint et le nombre de post de peinture sachant que cela ne doit pas dépaser le nombre d'heure de travail (390) et le capital (12 000)
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
2 mars 2013 à 23:27
2 mars 2013 à 23:27
ahhh d'accord, alors il faut définir deux boucles while indépendantes, puisque tes variables le sont aussi.
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 3/03/2013 à 01:05
Modifié par walidovich_85 le 3/03/2013 à 01:05
Bonsoir,
pardonné moi, mais je viens juste de comprendre ce que tu veux faire.
enfaite, c de la programmation linéaire avec deux variables.
donne moi un peu de temps pour y réfléchir, et je vais vous répondre (logique + code java)
pardonné moi, mais je viens juste de comprendre ce que tu veux faire.
enfaite, c de la programmation linéaire avec deux variables.
donne moi un peu de temps pour y réfléchir, et je vais vous répondre (logique + code java)
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 3/03/2013 à 04:42
Modifié par walidovich_85 le 3/03/2013 à 04:42
bonsoir/bonjour
quel surprise, le bénéfice maximal ne correspond pas au couple (19,20), mais plutôt (15,26).
ça m'a surpris, et j'ai cru pour un moment que le programme est erroné... mais j'ai vérifié manuellement (15,26) donne un bénéfice supérieur à celui du (19,20).
voila le code java (j'ai y met des commentaires pour expliqué la méthode utilisée pour trouver le bénéfice maximal et ses variables correspondantes)
public class Test {
public static void main(String[] args) {
int nbPapierPeint = 0, nbPeinture = 0;
int nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
int argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
int beneficeMaximal = (nbPapierPeint * 45) + (nbPeinture * 40);
// Variables de sauvegarde
int valeurNbPapierPeint=0;
int valeurNbPeinture=0;
int [] TabBeneficeMaximal= new int[33];
for (nbPapierPeint=0;nbPapierPeint<33;nbPapierPeint++)
{
/*********************************************************
* On fixe une variable (dans ce cas c'est nbPapierPeint)*
* et on cherche le bénéfice maximum en variant l'autre *
* varible (nbPeinture) *
*********************************************************/
for(nbPeinture=0;nbPeinture<39;nbPeinture++)
{
/*********************************************************
* A cette étape nous disposons de deux valeurs de nos *
* variables nbPapierPeint et nbPeinture, alors il suffit*
* de calculer les autres données et de vérifier s'ils *
* remplissent les conditions de mérite *
*********************************************************/
nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
TabBeneficeMaximal[nbPapierPeint]= nbPapierPeint * 45 + nbPeinture * 40;
if (nbHeureTravail<390 && argentInvestie<12000
&& beneficeMaximal<TabBeneficeMaximal[nbPapierPeint])
{
/*********************************************************
* Si les nouvelles valeurs remplissent les conditions de*
* mérite, on les enregistre pour pouvoir les afficher *
*********************************************************/
beneficeMaximal= TabBeneficeMaximal[nbPapierPeint];
valeurNbPeinture=nbPeinture;
valeurNbPapierPeint=nbPapierPeint;
}
}
}
// Affichage du bénéfice maximal et et ses variables correspondantes
//******************************************************************
System.out.println("Bénéfice maximal vaut "+beneficeMaximal
+" correspendant au couple (nbPapierPeint= "+valeurDeI
+", nbPeinture= "+valeurDeJ+")");
}
}
et voila le résultat affiché:
Bénéfice maximal vaut 1715 correspendant au couple (nbPapierPeint= 15, nbPeinture= 26)
Bonne chance
quel surprise, le bénéfice maximal ne correspond pas au couple (19,20), mais plutôt (15,26).
ça m'a surpris, et j'ai cru pour un moment que le programme est erroné... mais j'ai vérifié manuellement (15,26) donne un bénéfice supérieur à celui du (19,20).
voila le code java (j'ai y met des commentaires pour expliqué la méthode utilisée pour trouver le bénéfice maximal et ses variables correspondantes)
public class Test {
public static void main(String[] args) {
int nbPapierPeint = 0, nbPeinture = 0;
int nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
int argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
int beneficeMaximal = (nbPapierPeint * 45) + (nbPeinture * 40);
// Variables de sauvegarde
int valeurNbPapierPeint=0;
int valeurNbPeinture=0;
int [] TabBeneficeMaximal= new int[33];
for (nbPapierPeint=0;nbPapierPeint<33;nbPapierPeint++)
{
/*********************************************************
* On fixe une variable (dans ce cas c'est nbPapierPeint)*
* et on cherche le bénéfice maximum en variant l'autre *
* varible (nbPeinture) *
*********************************************************/
for(nbPeinture=0;nbPeinture<39;nbPeinture++)
{
/*********************************************************
* A cette étape nous disposons de deux valeurs de nos *
* variables nbPapierPeint et nbPeinture, alors il suffit*
* de calculer les autres données et de vérifier s'ils *
* remplissent les conditions de mérite *
*********************************************************/
nbHeureTravail = nbPapierPeint * 12 + nbPeinture * 8;
argentInvestie = nbPapierPeint * 250 + nbPeinture * 310;
TabBeneficeMaximal[nbPapierPeint]= nbPapierPeint * 45 + nbPeinture * 40;
if (nbHeureTravail<390 && argentInvestie<12000
&& beneficeMaximal<TabBeneficeMaximal[nbPapierPeint])
{
/*********************************************************
* Si les nouvelles valeurs remplissent les conditions de*
* mérite, on les enregistre pour pouvoir les afficher *
*********************************************************/
beneficeMaximal= TabBeneficeMaximal[nbPapierPeint];
valeurNbPeinture=nbPeinture;
valeurNbPapierPeint=nbPapierPeint;
}
}
}
// Affichage du bénéfice maximal et et ses variables correspondantes
//******************************************************************
System.out.println("Bénéfice maximal vaut "+beneficeMaximal
+" correspendant au couple (nbPapierPeint= "+valeurDeI
+", nbPeinture= "+valeurDeJ+")");
}
}
et voila le résultat affiché:
Bénéfice maximal vaut 1715 correspendant au couple (nbPapierPeint= 15, nbPeinture= 26)
Bonne chance
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
3 mars 2013 à 04:44
3 mars 2013 à 04:44
NB: tu n'a pas besoin d'importer les bibliothèques Maths...
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
3 mars 2013 à 04:51
3 mars 2013 à 04:51
les valeurs 33 et 39 sont calculées en supposant une variable vaut 0 et en y appliquant les inégalités nbHeureTravail et argentInvesti sur l'autre.
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
3 mars 2013 à 16:14
3 mars 2013 à 16:14
bonjour,
tt simplement, j'ai pensé un peu bêtement, car la machine l'est aussi.
la solution sera un couple (nbPapierPeint, nbPeinture).
étant donné un bénéfice A, je vais calculer le maximim de nbPapierPeint. Logiquement celui ci sera maximal si nbPeinture vaut 0, alors j'applique les contraintes nbHeureTrvail et argentInvestie sur la variable nbPapierPeint:
1- nbPapierPeint * 12 + 0 * 8 = nbHeureTravail < 390 =>
nbPpaierPeint < 390/12 = 32,5 (33 avec arrondissement)
2- nbPapierPeint * 250 + 0 * 310 = argentInvestie < 12000 =>
nbPapierPeint < 12000/250 = 48
de (1) et (2) on déduit que nbPapierPeint est inférieur à 33.
alors on a 33 cas (valeurs) pr nbPapierPeint, c a dire 33 cas de Bénéfice maximal (en trouvant bien sur la valeur de nbPeinture qui rend le bénéfice maximal).
et en calculant ces 33 cas potentiel de bénéfice, on va garder à chaque étape le bénéfice maximal en le comparant avec le résultat du bénéfice de l'opération précédente ( comme une sorte de trouver le maximum d'un tableau en langage C), et en mémorisant la valeur de nbPapierPeint et nb Peinture qui ont généré ce bénéfice maximal.
ça m'a prix un peu de temps, car en programmation linéaire en math, la solution ou plutot la méthode est très différente (l'homme ne peut pas calculer 33 bénéfice et les comparer, car c'est long et bête, alors il utilise des équation et des graphes, mais la machine peut le faire, car elle est bête et rapide).
c'était un plaisir M. ou Mme natier
tt simplement, j'ai pensé un peu bêtement, car la machine l'est aussi.
la solution sera un couple (nbPapierPeint, nbPeinture).
étant donné un bénéfice A, je vais calculer le maximim de nbPapierPeint. Logiquement celui ci sera maximal si nbPeinture vaut 0, alors j'applique les contraintes nbHeureTrvail et argentInvestie sur la variable nbPapierPeint:
1- nbPapierPeint * 12 + 0 * 8 = nbHeureTravail < 390 =>
nbPpaierPeint < 390/12 = 32,5 (33 avec arrondissement)
2- nbPapierPeint * 250 + 0 * 310 = argentInvestie < 12000 =>
nbPapierPeint < 12000/250 = 48
de (1) et (2) on déduit que nbPapierPeint est inférieur à 33.
alors on a 33 cas (valeurs) pr nbPapierPeint, c a dire 33 cas de Bénéfice maximal (en trouvant bien sur la valeur de nbPeinture qui rend le bénéfice maximal).
et en calculant ces 33 cas potentiel de bénéfice, on va garder à chaque étape le bénéfice maximal en le comparant avec le résultat du bénéfice de l'opération précédente ( comme une sorte de trouver le maximum d'un tableau en langage C), et en mémorisant la valeur de nbPapierPeint et nb Peinture qui ont généré ce bénéfice maximal.
ça m'a prix un peu de temps, car en programmation linéaire en math, la solution ou plutot la méthode est très différente (l'homme ne peut pas calculer 33 bénéfice et les comparer, car c'est long et bête, alors il utilise des équation et des graphes, mais la machine peut le faire, car elle est bête et rapide).
c'était un plaisir M. ou Mme natier
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
3 mars 2013 à 16:15
3 mars 2013 à 16:15
et merci de noter le sujet comme résolut, comem ça les autres internautes auront une meilleur lisibilité de ce sujet.