Comment construire mon algorithme ?
Résolu/Fermé
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
-
Modifié par lml-mike le 2/09/2010 à 16:45
lml-mike Messages postés 453 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 - 8 sept. 2010 à 13:39
lml-mike Messages postés 453 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 - 8 sept. 2010 à 13:39
A voir également:
- Comment construire mon algorithme ?
- Logiciel algorithme gratuit - Télécharger - Édition & Programmation
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Jeux pour construire des maisons en 3d gratuit - Télécharger - Architecture & Déco
- Construire un organigramme - Guide
- Construire une phrase avec des mots donnés ✓ - Forum Loisirs / Divertissements
4 réponses
Gord21
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
289
2 sept. 2010 à 22:15
2 sept. 2010 à 22:15
Bonsoir,
Peux-tu détailler ce que tu appelles formule : je ne vois pas quelle est la différence entre 6 et 15€
@+
Peux-tu détailler ce que tu appelles formule : je ne vois pas quelle est la différence entre 6 et 15€
@+
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
Modifié par lml-mike le 3/09/2010 à 11:22
Modifié par lml-mike le 3/09/2010 à 11:22
Voilà l'algorithme quasi-incompréhensible que j'ai fais suivant mon problème.
Je suis désolé mais je suis pas développeur à la base, désolé si certaines fonctions de l'algorithme s'écrivent pas réellement comme ça...
(désolé, l'indentation ne fonctionne pas sur CCM sur les dernières lignes je sais pas pourquoi ...)
Pour les plus tordus, bonne chance, j'espère que vous arriverez à suivre :
___________________________________
________________________________________
J'ai deux problèmes insolubles avec cet algorithme :
- Si un client prends 8 boissons seulement, ils ne seront pas comptabilisés comme 2 repas, mais comme un seul
- Si un client prends 4 boissons et un sandwich, ils seront comptabilisés comme 2 repas alors qu'il manque une boisson.
Si un casse-cou est prêt à m'aider à régler ce problème, je lui en serait vraiment reconnaissant !!
Merci pour votre attention !
Je suis désolé mais je suis pas développeur à la base, désolé si certaines fonctions de l'algorithme s'écrivent pas réellement comme ça...
(désolé, l'indentation ne fonctionne pas sur CCM sur les dernières lignes je sais pas pourquoi ...)
Pour les plus tordus, bonne chance, j'espère que vous arriverez à suivre :
___________________________________
Début Case tableau(Colonne1,Ligne1) Tant que .active <> « » Si .active = « Salade » alors Nbsandwich <- nbsandwich + 1 Sandwich <- 1 Sinon si .active = « Sandwich » alors Nbsandwich <- nbsandwich + 1 Sandwich <- 1 Sinon si .active = « Pizza » alors Nbsandwich <- nbsandwich + 1 Sandwich <- 1 Sinon si .active = « Pâtes » alors Nbsandwich <- nbsandwich + 1 Sandwich <- 1 Sinon si .active = « Frites » alors Nbsandwich <- nbsandwich + 1 Sandwich <- 1 Sinon si .active = « boisson » alors Nbboisson <- nbboisson + 1 Boisson <- 1 Fin si Case suivante Prix_conso <- .active Si sandwich = 1 alors Si prix_formule < prix_conso alors Prix_formule <- prix_conso Sinon si prix_formuleb < prix_conso alors Prix_formuleb <- prix_conso Fin si Fin si Si boisson = 1 alors Si prix_formule2 < prix_conso alors Prix_formule2 <- prix_conso Sinon si prix_formule2b < prix_conso alors Prix_formule2b <- prix_conso Sinon si prix_formule2c < prix_conso alors Prix_formule2c <- prix_conso Sinon si prix_formule2d < prix_conso alors Prix_formule2d <- prix_conso Fin si Sandwich <- 0 Boisson <- 0 Colonne suivante Case -1 Fin tant que Si prix_formule > 3.5 alors Diff_Prix_formule <- Diff_prix_formule - 3.5 Fin si Si prix_formuleb > 3.5 alors Diff_prix_formule2 <- Diff_prix_formule2 - 3.5 Fin si Si prix_formule2 > 1.3 alors Diff_prix_formule2 <- Diff_prix_formule2 - 1.3 Fin si Si prix_formule2b > 1.3 alors Diff_prix_formule2b <- Diff_prix_formule2b - 1.3 Fin si Si prix_formule2c > 1.3 alors Diff_prix_formule2c <- Diff_prix_formule2c - 1.3 Fin si Si prix_formule2b > 1.3 alors Diff_prix_formule2d <- Diff_prix_formule2d - 1.3 Fin si Si prix_formule2 <> « » et prix_formule2b <> « » et prix_formule2c <> « » et prix_formule2d <> « » et repas < 2 alors Déduction_repas = Déduction_repas + prix_formule2 + prix_formule2b + prix_formule2c + prix_formule2d Supp_repas = supp_repas + Diff_prix_formule2 + Diff_prix_formule2b + Diff_prix_formule2c + Diff_prix_formule2d Repas <- Repas + 1 Fin si Si prix_formule <> « » et prix_formule2 <> « » et repas < 2 alors Déduction_repas = Déduction_repas + prix_formule + prix_formule2 Supp_repas = Supp_repas + diff_prix_formule + diff_prix_formule2 Repas <- Repas + 1 Fin Si Si prix_formuleb <> « » et prix_formule2b <> « » < 2 alors Déduction_repas = Déduction_repas + prix_formuleb + prix_formule2b Supp_repas = Supp_repas + diff_prix_formuleb + diff_prix_formule2b Repas <- Repas + 1 Fin si Si prix_total_conso > 28 alors Si repas = 2 alors Prix_total_conso = prix_total_conso - Déduction_repas Prix_total_conso = prix_total_conso + 28 Prix_total_conso = prix_total_conso + Supp_repas Afficher « Formule 28€ appliquée ! » Sinon Afficher « Il vous manque » & 2 - Repas & « Repas pour valider une formule journée ! » Fin si Sinon si prix_total_conso > 15 alors Si repas = 1 alors Prix_total_conso = prix_total_conso - Déduction_repas Prix_total_conso = prix_total_conso + 15 Prix_total_conso = prix_total_conso + Supp_repas Afficher « Formule 15€ appliquée ! » Sinon Afficher « Il vous manque un repas pour valider une formule Demi-journée ! » Fin si Sinon si prix_total_conso > 6 alors Si repas = 1 alors Prix_total_conso = prix_total_conso - Déduction_repas Prix_total_conso = prix_total_conso + 6 Prix_total_conso = prix_total_conso + Supp_repas Afficher « Formule 15€ appliquée ! » Sinon Afficher « Il vous manque un repas pour valider une formule à toute heure ! » Fin si Fin si Afficher « Vous devez payer » & prix_total_conso & « euros » Fin
________________________________________
J'ai deux problèmes insolubles avec cet algorithme :
- Si un client prends 8 boissons seulement, ils ne seront pas comptabilisés comme 2 repas, mais comme un seul
- Si un client prends 4 boissons et un sandwich, ils seront comptabilisés comme 2 repas alors qu'il manque une boisson.
Si un casse-cou est prêt à m'aider à régler ce problème, je lui en serait vraiment reconnaissant !!
Merci pour votre attention !
Gord21
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
289
3 sept. 2010 à 18:09
3 sept. 2010 à 18:09
Bonjour,
L'application des formules n'est pas très clair (en tout cas pour moi) :
si le client prend 2 sandwichs et 4 boissons : a-t-il deux repas et deux boissons ou un repas et deux sandwichs?
@+
L'application des formules n'est pas très clair (en tout cas pour moi) :
si le client prend 2 sandwichs et 4 boissons : a-t-il deux repas et deux boissons ou un repas et deux sandwichs?
@+
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
Modifié par lml-mike le 3/09/2010 à 21:16
Modifié par lml-mike le 3/09/2010 à 21:16
Pour ton exemple de 2 sandwichs et 4 boissons :
Selon la logique de l'algorithme, il a 2 repas, composé d'un repas de 4 boissons, et d'un sandwich avec...une boisson déjà utilisé pour le repas...
Mon algorithme est faux, il faut que je trouve un moyen de faire sauter le ou les boissons dans la boucle tant que lorsqu'elle(s) est ou sont déjà utilisée(s) dans un repas ....
Rahhhhh c'est dûr ...
Selon la logique de l'algorithme, il a 2 repas, composé d'un repas de 4 boissons, et d'un sandwich avec...une boisson déjà utilisé pour le repas...
Mon algorithme est faux, il faut que je trouve un moyen de faire sauter le ou les boissons dans la boucle tant que lorsqu'elle(s) est ou sont déjà utilisée(s) dans un repas ....
Rahhhhh c'est dûr ...
Gord21
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
289
3 sept. 2010 à 21:27
3 sept. 2010 à 21:27
Oui, mais quel résultat souhaiterais-tu dans ce cas ? Est-ce que tu as une logique ou des priorités (le plus rentable par exemple)
@+
@+
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
6 sept. 2010 à 10:17
6 sept. 2010 à 10:17
En fait c'est pas le plus rentable que je veux, c'est le plus profitable pour le client (4 boissons font 5.20€, 1 sandwich et une boisson fait 3.50+1.3 = 4.80€).
Avec ton exemple, si le gars prends deux sandwichs et 4 boissons, il faut que ce soit comptabilisé comme 2 repas (Sandwich + boisson)+ les deux boissons restantes comptabilisées.
Dans mon algorithme qui est faux, cela compte comme 2 repas mais sous forme 1 repas 4 boissons et 1 repas Sandwich + boisson, alors que les 4 boissons sont déjà comptabilisées en tant que repas. Il y a donc une boisson qui est comptée comme double.
Ma nouvelle problématique serait : comment faire pour que quand une boisson est utilisée dans une formule elle ne puisse pas etre réutilisée pour une autre ?
plusieurs exemples :
- 2 sandwichs et 4 boissons = 2 repas + 2 boissons
- 1 sandwich et 4 boissons = 1 repas (4 boissons) + 1 sandwich
- 1 sandwich et 5 boissons = 2 repas (4 boissons + Sandwich&boisson)
- 2 sandwichs et 6 boissons = 2 repas (4 boissons + Sandwich&boisson) +1 sandwich + 1 boisson
Vous avez compris la logique ? Je suis désolé, je vous l'ai dis c'est vraiment pas facile ...
Avec ton exemple, si le gars prends deux sandwichs et 4 boissons, il faut que ce soit comptabilisé comme 2 repas (Sandwich + boisson)+ les deux boissons restantes comptabilisées.
Dans mon algorithme qui est faux, cela compte comme 2 repas mais sous forme 1 repas 4 boissons et 1 repas Sandwich + boisson, alors que les 4 boissons sont déjà comptabilisées en tant que repas. Il y a donc une boisson qui est comptée comme double.
Ma nouvelle problématique serait : comment faire pour que quand une boisson est utilisée dans une formule elle ne puisse pas etre réutilisée pour une autre ?
plusieurs exemples :
- 2 sandwichs et 4 boissons = 2 repas + 2 boissons
- 1 sandwich et 4 boissons = 1 repas (4 boissons) + 1 sandwich
- 1 sandwich et 5 boissons = 2 repas (4 boissons + Sandwich&boisson)
- 2 sandwichs et 6 boissons = 2 repas (4 boissons + Sandwich&boisson) +1 sandwich + 1 boisson
Vous avez compris la logique ? Je suis désolé, je vous l'ai dis c'est vraiment pas facile ...
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
6 sept. 2010 à 16:27
6 sept. 2010 à 16:27
J'ai trouvé un moyen plutôt long mais qui est sûr pour pouvoir gérer ça... Le code est en VB mais c'est plutôt simple à comprendre (il s'agit juste de la partie contrôle pour les boissons :
If nbboisson = 8 Then déduction_repas = déduction_repas - prix_formuleb - prix_formuleb2 _ - prix_formuleb3 - prix_formuleb4 _ - prix_formuleb5 - prix_formuleb6 _ - prix_formuleb7 - prix_formuleb8 Supp_repas = Supp_repas + diff_prix_formuleb + diff_prix_formuleb2 + diff_prix_formuleb3 _ + diff_prix_formuleb4 + diff_prix_formuleb5 + diff_prix_formuleb6 _ + diff_prix_formuleb7 + diff_prix_formuleb8 Repas = Repas + 2 ElseIf nbboisson > 4 And Repas < 2 Then If nbsandwich >= 1 Then déduction_repas = déduction_repas - prix_formule - prix_formuleb _ - prix_formuleb2 - prix_formuleb3 _ - prix_formuleb4 - prix_formuleb5 Supp_repas = Supp_repas + diff_prix_formule + diff_prix_formuleb + diff_prix_formuleb2 _ + diff_prix_formuleb3 + diff_prix_formuleb4 + diff_prix_formuleb5 Repas = Repas + 2 Else déduction_repas = déduction_repas - prix_formuleb - prix_formuleb2 _ - prix_formuleb3 - prix_formuleb4 Supp_repas = Supp_repas + diff_prix_formuleb + diff_prix_formuleb2 _ + diff_prix_formuleb3 + diff_prix_formuleb4 Repas = Repas + 1 End If ElseIf nbboisson = 4 And Repas < 2 Then If nbsandwich >= 2 Then déduction_repas = déduction_repas - prix_formule - prix_formule2 _ - prix_formuleb - prix_formuleb2 Supp_repas = Supp_repas + diff_prix_formule + diff_prix_formule2 _ + diff_prix_formuleb + diff_prix_formuleb2 Repas = Repas + 2 Else déduction_repas = déduction_repas - prix_formuleb - prix_formuleb2 _ - prix_formuleb3 - prix_formuleb4 Supp_repas = Supp_repas + diff_prix_formuleb + diff_prix_formuleb2 _ + diff_prix_formuleb3 + diff_prix_formuleb4 Repas = Repas + 1 End If ElseIf nbboisson >= 2 And Repas < 2 Then If nbsandwich >= 2 Then déduction_repas = déduction_repas - prix_formule - prix_formule2 _ - prix_formuleb - prix_formuleb2 Supp_repas = Supp_repas + diff_prix_formule + diff_prix_formule2 _ + diff_prix_formuleb + diff_prix_formuleb2 Repas = Repas + 2 ElseIf nbsandwich = 1 Then déduction_repas = déduction_repas - prix_formule - prix_formuleb Supp_repas = Supp_repas + diff_prix_formule + diff_prix_formuleb Repas = Repas + 1 End If End If
Gord21
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
289
Modifié par Gord21 le 8/09/2010 à 12:48
Modifié par Gord21 le 8/09/2010 à 12:48
Bonjour,
Est-ce une erreur dans le dernier exemple : ne devrait-il pas y avoir 3 repas ?
A quoi correspondent tes formules (formule, formuleb, formule2, ...) ?
Est-ce que tu travailles sur Excel ?
@+
Est-ce une erreur dans le dernier exemple : ne devrait-il pas y avoir 3 repas ?
A quoi correspondent tes formules (formule, formuleb, formule2, ...) ?
Est-ce que tu travailles sur Excel ?
@+
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
120
Modifié par lml-mike le 8/09/2010 à 13:42
Modifié par lml-mike le 8/09/2010 à 13:42
Le problème est résolu !
Il ne faut pas qu'il y ai 3 repas, car 2 repas sont nécessaires seulement pour valider une formule journée.
formule et formule2 sont le prix des sandwich les plus chers
formuleb a b8 sont les prix des boissons.
En fait l'algorithme récupère le prix de toutes les consommations et garde pour la formule seulement les plus chers, qui seront utilisées dans le cadre de cette formule. Ensuite, il regarde s'ils sont dans le prix, sinon ils extraient le supplément par rapport au plafond (3,50 pour le sandwich, 1,30 pour la boisson) et le rajoute dans le prix final. Enfin, il privilégie le type de repas en fonction du plus intéressant, soit 4 boissons en premier choix, ou sandwich+boisson en deuxième.
Le soucis venait de là, car en fonction du nombre de boissons et de l'ordre dont il les prenait, l'algorithme agissait différemment.
Exemple : (B pour boisson commandée, S pour sandwich commandé)
B B B B B B B B = 2 repas, jusque là simple.
B B S B B B = là il faut privilégier le repas 4 boissons + le repas Sandwich/boisson = 2 repas
B B B S B = Plus dur, là seul les 4 boissons sont compabilisées, il manque une boisson pour faire un deuxième repas en complément du sandwich.
S S B B B B = Ici, si on comptabilise les 4 boissons on a qu'un repas. Par contre, si on comptabilise 2 sandwichs+2 boissons, on en a deux...
C'est ce que le programme au dessus vérifie :-)
Oui je travaille sous excel :)
Merci de m'avoir aidé dans mon raisonnement, et de t'être pris la peine de lire mes pavés ! Je suis à ta disposition si t'as d'autres questions.
Mike.
P.S.: j'ai rajouté dans le code la partie elseif nbboisson > 0 et nbsandwich > 0 pour comptabiliser un repas, et j'ai toutes mes possibilités :)
Il ne faut pas qu'il y ai 3 repas, car 2 repas sont nécessaires seulement pour valider une formule journée.
formule et formule2 sont le prix des sandwich les plus chers
formuleb a b8 sont les prix des boissons.
En fait l'algorithme récupère le prix de toutes les consommations et garde pour la formule seulement les plus chers, qui seront utilisées dans le cadre de cette formule. Ensuite, il regarde s'ils sont dans le prix, sinon ils extraient le supplément par rapport au plafond (3,50 pour le sandwich, 1,30 pour la boisson) et le rajoute dans le prix final. Enfin, il privilégie le type de repas en fonction du plus intéressant, soit 4 boissons en premier choix, ou sandwich+boisson en deuxième.
Le soucis venait de là, car en fonction du nombre de boissons et de l'ordre dont il les prenait, l'algorithme agissait différemment.
Exemple : (B pour boisson commandée, S pour sandwich commandé)
B B B B B B B B = 2 repas, jusque là simple.
B B S B B B = là il faut privilégier le repas 4 boissons + le repas Sandwich/boisson = 2 repas
B B B S B = Plus dur, là seul les 4 boissons sont compabilisées, il manque une boisson pour faire un deuxième repas en complément du sandwich.
S S B B B B = Ici, si on comptabilise les 4 boissons on a qu'un repas. Par contre, si on comptabilise 2 sandwichs+2 boissons, on en a deux...
C'est ce que le programme au dessus vérifie :-)
Oui je travaille sous excel :)
Merci de m'avoir aidé dans mon raisonnement, et de t'être pris la peine de lire mes pavés ! Je suis à ta disposition si t'as d'autres questions.
Mike.
P.S.: j'ai rajouté dans le code la partie elseif nbboisson > 0 et nbsandwich > 0 pour comptabiliser un repas, et j'ai toutes mes possibilités :)
3 sept. 2010 à 10:25
J'ai trouvé une idée d'algorithme, je le publie d'ici 5mn le temps de le vérifier...