Je voudrais dans une appli obliger de choisir une quantité qui doit être une
combinaison d'emballages possibles.
Comme chacun sait qu'un bon exemple vaut tous les discours...
J'ai des assiettes que je peux conditionner par 15, 25, 40. Dans une
rubrique texte, on met alors
25/15/40 pour dire que 25 sera la quantité par défaut et les autres des
alternatives.
On peut bien évidemment mélanger plusieurs emballages...
Quels quantités sont valides ?
10 non... ne correspond à aucun conditionnement
15 oui facile
20 non, 1 x 15 puis ???
30 oui, 2 x 15
45 oui, 3 x 15
48 non
50 oui, 2 x 25
55 oui, 2 x 15 + 1 x 25
60 oui, 4 x 15
65, oui 1 x 40 + 1 x 25 ou 2 x 25 + 1 x 15
69, non
... Et ainsi de suite
Comment feriez vous une fonction qui me renverrait Vrai/Faux en lui envoyant
2 paramètres : "Quantité" (60) et "chaine de conditionnement" (25/15/40)
Des remerciements en pagaille au premier qui trouve la sympathique fonction.
Ben Voyons ! Encore un qui prend des libertés avec l'énoncé ;-) Le monsieur t'as dit 25/15/40 et pas 20/15/40 et ça marche pas ta solution nananère heu ! Eric Roumegou
Eric LAURENT wrote:
Ouups ! petit correctif: (au fait, j'ai gagné quelque chose ? - peut-être Windev 8 gratuit ou la 7.5 enfin deboggée !)
QuantiteTotale est un entier //A livrer Cond40 est un entier //Conditionnement par 40 Cond20 est un entier //Conditionnement par 20 Cond15 est un entier //Conditionnement par 15
Reste1 est un entier Reste2 est un entier Reste3 est un entier
SI modulo(Reste1,20)>0 ALORS SI modulo(Reste1,15)>0 ALORS Erreur("Erreur de conditionnement","Vous devez compléter votre commande d'au moins "+ (15-Reste1)+" produits") RETOUR SINON Cond15= PartieEntière(Reste1/15) FIN SINON Cond20= PartieEntière(Reste1/20) FIN
Info("Votre commande sera conditionné avec "+RC+... Cond40+" cartons de 40"+RC+... Cond20+" cartons de 20"+RC+... Cond15+" cartons de 15")
Ben Voyons !
Encore un qui prend des libertés avec l'énoncé ;-)
Le monsieur t'as dit 25/15/40 et pas 20/15/40 et ça marche pas ta solution
nananère heu !
Eric Roumegou
Eric LAURENT wrote:
Ouups ! petit correctif: (au fait, j'ai gagné quelque chose ? -
peut-être Windev 8 gratuit ou la 7.5 enfin deboggée !)
QuantiteTotale est un entier //A livrer
Cond40 est un entier //Conditionnement par 40
Cond20 est un entier //Conditionnement par 20
Cond15 est un entier //Conditionnement par 15
Reste1 est un entier
Reste2 est un entier
Reste3 est un entier
SI modulo(Reste1,20)>0 ALORS
SI modulo(Reste1,15)>0 ALORS
Erreur("Erreur de conditionnement","Vous devez compléter votre
commande d'au moins "+ (15-Reste1)+" produits")
RETOUR
SINON
Cond15= PartieEntière(Reste1/15)
FIN
SINON
Cond20= PartieEntière(Reste1/20)
FIN
Info("Votre commande sera conditionné avec "+RC+...
Cond40+" cartons de 40"+RC+...
Cond20+" cartons de 20"+RC+...
Cond15+" cartons de 15")
Ben Voyons ! Encore un qui prend des libertés avec l'énoncé ;-) Le monsieur t'as dit 25/15/40 et pas 20/15/40 et ça marche pas ta solution nananère heu ! Eric Roumegou
Eric LAURENT wrote:
Ouups ! petit correctif: (au fait, j'ai gagné quelque chose ? - peut-être Windev 8 gratuit ou la 7.5 enfin deboggée !)
QuantiteTotale est un entier //A livrer Cond40 est un entier //Conditionnement par 40 Cond20 est un entier //Conditionnement par 20 Cond15 est un entier //Conditionnement par 15
Reste1 est un entier Reste2 est un entier Reste3 est un entier
SI modulo(Reste1,20)>0 ALORS SI modulo(Reste1,15)>0 ALORS Erreur("Erreur de conditionnement","Vous devez compléter votre commande d'au moins "+ (15-Reste1)+" produits") RETOUR SINON Cond15= PartieEntière(Reste1/15) FIN SINON Cond20= PartieEntière(Reste1/20) FIN
Info("Votre commande sera conditionné avec "+RC+... Cond40+" cartons de 40"+RC+... Cond20+" cartons de 20"+RC+... Cond15+" cartons de 15")
Eric LAURENT
C'était pour vour si vous suiviez .... (lol) Si vous voulez du tout cuit, essayez cela, réponse à 100% du cahier des charges:
QuantiteTotale est un entier //A livrer Cond40 est un entier //Conditionnement par 40 Cond25 est un entier //Conditionnement par 25 Cond15 est un entier //Conditionnement par 15
Reste1 est un entier Reste2 est un entier Reste3 est un entier
SI modulo(Reste1,25)>0 ALORS SI modulo(Reste1,15)>0 ALORS Erreur("Erreur de conditionnement","Vous devez compléter votre commande d'au moins "+ (15-(modulo(Reste1,15)))+" produits") RETOUR SINON Cond15= PartieEntière(Reste1/15) FIN SINON Cond25= PartieEntière(Reste1/25) FIN
Info("Votre commande sera conditionné avec "+RC+... Cond40+" cartons de 40"+RC+... Cond25+" cartons de 25"+RC+... Cond15+" cartons de 15")
Ben Voyons ! Encore un qui prend des libertés avec l'énoncé ;-) Le monsieur t'as dit 25/15/40 et pas 20/15/40 et ça marche pas ta solution nananère heu ! Eric Roumegou
Eric LAURENT wrote:
Ouups ! petit correctif: (au fait, j'ai gagné quelque chose ? - peut-être Windev 8 gratuit ou la 7.5 enfin deboggée !)
QuantiteTotale est un entier //A livrer Cond40 est un entier //Conditionnement par 40 Cond20 est un entier //Conditionnement par 20 Cond15 est un entier //Conditionnement par 15
Reste1 est un entier Reste2 est un entier Reste3 est un entier
SI modulo(Reste1,20)>0 ALORS SI modulo(Reste1,15)>0 ALORS Erreur("Erreur de conditionnement","Vous devez compléter votre commande d'au moins "+ (15-Reste1)+" produits") RETOUR SINON Cond15= PartieEntière(Reste1/15) FIN SINON Cond20= PartieEntière(Reste1/20) FIN
Info("Votre commande sera conditionné avec "+RC+... Cond40+" cartons de 40"+RC+... Cond20+" cartons de 20"+RC+... Cond15+" cartons de 15")
C'était pour vour si vous suiviez .... (lol)
Si vous voulez du tout cuit, essayez cela, réponse à 100% du cahier des
charges:
QuantiteTotale est un entier //A livrer
Cond40 est un entier //Conditionnement par 40
Cond25 est un entier //Conditionnement par 25
Cond15 est un entier //Conditionnement par 15
Reste1 est un entier
Reste2 est un entier
Reste3 est un entier
SI modulo(Reste1,25)>0 ALORS
SI modulo(Reste1,15)>0 ALORS
Erreur("Erreur de conditionnement","Vous devez compléter votre commande
d'au moins "+ (15-(modulo(Reste1,15)))+" produits")
RETOUR
SINON
Cond15= PartieEntière(Reste1/15)
FIN
SINON
Cond25= PartieEntière(Reste1/25)
FIN
Info("Votre commande sera conditionné avec "+RC+...
Cond40+" cartons de 40"+RC+...
Cond25+" cartons de 25"+RC+...
Cond15+" cartons de 15")
Ben Voyons !
Encore un qui prend des libertés avec l'énoncé ;-)
Le monsieur t'as dit 25/15/40 et pas 20/15/40 et ça marche pas ta
solution nananère heu !
Eric Roumegou
Eric LAURENT wrote:
Ouups ! petit correctif: (au fait, j'ai gagné quelque chose ? -
peut-être Windev 8 gratuit ou la 7.5 enfin deboggée !)
QuantiteTotale est un entier //A livrer
Cond40 est un entier //Conditionnement par 40
Cond20 est un entier //Conditionnement par 20
Cond15 est un entier //Conditionnement par 15
Reste1 est un entier
Reste2 est un entier
Reste3 est un entier
SI modulo(Reste1,20)>0 ALORS
SI modulo(Reste1,15)>0 ALORS
Erreur("Erreur de conditionnement","Vous devez compléter votre
commande d'au moins "+ (15-Reste1)+" produits")
RETOUR
SINON
Cond15= PartieEntière(Reste1/15)
FIN
SINON
Cond20= PartieEntière(Reste1/20)
FIN
Info("Votre commande sera conditionné avec "+RC+...
Cond40+" cartons de 40"+RC+...
Cond20+" cartons de 20"+RC+...
Cond15+" cartons de 15")
QuantiteTotale est un entier //A livrer Cond40 est un entier //Conditionnement par 40 Cond25 est un entier //Conditionnement par 25 Cond15 est un entier //Conditionnement par 15
Reste1 est un entier Reste2 est un entier Reste3 est un entier
SI modulo(Reste1,25)>0 ALORS SI modulo(Reste1,15)>0 ALORS Erreur("Erreur de conditionnement","Vous devez compléter votre commande d'au moins "+ (15-(modulo(Reste1,15)))+" produits") RETOUR SINON Cond15= PartieEntière(Reste1/15) FIN SINON Cond25= PartieEntière(Reste1/25) FIN
Info("Votre commande sera conditionné avec "+RC+... Cond40+" cartons de 40"+RC+... Cond25+" cartons de 25"+RC+... Cond15+" cartons de 15")
Ben Voyons ! Encore un qui prend des libertés avec l'énoncé ;-) Le monsieur t'as dit 25/15/40 et pas 20/15/40 et ça marche pas ta solution nananère heu ! Eric Roumegou
Eric LAURENT wrote:
Ouups ! petit correctif: (au fait, j'ai gagné quelque chose ? - peut-être Windev 8 gratuit ou la 7.5 enfin deboggée !)
QuantiteTotale est un entier //A livrer Cond40 est un entier //Conditionnement par 40 Cond20 est un entier //Conditionnement par 20 Cond15 est un entier //Conditionnement par 15
Reste1 est un entier Reste2 est un entier Reste3 est un entier
SI modulo(Reste1,20)>0 ALORS SI modulo(Reste1,15)>0 ALORS Erreur("Erreur de conditionnement","Vous devez compléter votre commande d'au moins "+ (15-Reste1)+" produits") RETOUR SINON Cond15= PartieEntière(Reste1/15) FIN SINON Cond20= PartieEntière(Reste1/20) FIN
Info("Votre commande sera conditionné avec "+RC+... Cond40+" cartons de 40"+RC+... Cond20+" cartons de 20"+RC+... Cond15+" cartons de 15")
B. Neve
"B. Neve" schreef in bericht news:3fb94759$0$15807$
Bonsoir à tous,
Petit casse-tête entre amis...
Bonjour à tous,
Je vois que je titille votre ego... C'est sympa. Je pensais comme apparemment pas mal d'entre vous que ce serait fait en deux coups de cuillère à pot. Teretete... Non non non. La bête n'est pas morte.
Comme vous l'avez remarqué... Jouer avec les plus grands dénominateurs ne solutionne pas tout loin de là. Je ne cherche pas l'emballage optimal mais uniquement savoir si c'est possible d'emballer.
Le challenge continue. Merci en tout cas de tenter le coup... Pas facile. Il faut que cela soit tout à fait dynamique bien évidemment. Si j'ai 8 emballages possibles... Cela doit fontionner également.
A plus tard.
B. Nève (qui n'a pas beaucoup dormi)
"B. Neve" <bne@dagico.com> schreef in bericht
news:3fb94759$0$15807$ba620e4c@reader3.news.skynet.be...
Bonsoir à tous,
Petit casse-tête entre amis...
Bonjour à tous,
Je vois que je titille votre ego... C'est sympa. Je pensais comme
apparemment pas mal d'entre vous que ce serait fait en deux coups de
cuillère à pot.
Teretete... Non non non. La bête n'est pas morte.
Comme vous l'avez remarqué... Jouer avec les plus grands dénominateurs ne
solutionne pas tout loin de là. Je ne cherche pas l'emballage optimal mais
uniquement savoir si c'est possible d'emballer.
Le challenge continue.
Merci en tout cas de tenter le coup... Pas facile. Il faut que cela soit
tout à fait dynamique bien évidemment. Si j'ai 8 emballages possibles...
Cela doit fontionner également.
"B. Neve" schreef in bericht news:3fb94759$0$15807$
Bonsoir à tous,
Petit casse-tête entre amis...
Bonjour à tous,
Je vois que je titille votre ego... C'est sympa. Je pensais comme apparemment pas mal d'entre vous que ce serait fait en deux coups de cuillère à pot. Teretete... Non non non. La bête n'est pas morte.
Comme vous l'avez remarqué... Jouer avec les plus grands dénominateurs ne solutionne pas tout loin de là. Je ne cherche pas l'emballage optimal mais uniquement savoir si c'est possible d'emballer.
Le challenge continue. Merci en tout cas de tenter le coup... Pas facile. Il faut que cela soit tout à fait dynamique bien évidemment. Si j'ai 8 emballages possibles... Cela doit fontionner également.
A plus tard.
B. Nève (qui n'a pas beaucoup dormi)
Marcel.berman
Salut ! Je viens de retester mon code et il marche aussi pour 4780.Je peux envoyer une fenêtre de test en privé à qui le veut. L'énoncé du problème n'est PAS de trouver le détail du conditionnement mais bien de renvoyer Vrai ou Faux selon que la quantité et le type de conditionnement envoyés en paramêtre sont "compatibles". Bien à vous ! -- Marcel Berman c/o Managing Business SPRL Allée du Petit Paris, 11 B - 1410 - Waterloo Tel : +32 2 351.60.64 Fax : +32 2 351.45.78 Gsm : +32 475.799.477
Salut !
Je viens de retester mon code et il marche aussi pour 4780.Je peux envoyer
une fenêtre de test en privé à qui le veut.
L'énoncé du problème n'est PAS de trouver le détail du conditionnement mais
bien de renvoyer Vrai ou Faux selon que la quantité et le type de
conditionnement envoyés en paramêtre sont "compatibles".
Bien à vous !
--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Salut ! Je viens de retester mon code et il marche aussi pour 4780.Je peux envoyer une fenêtre de test en privé à qui le veut. L'énoncé du problème n'est PAS de trouver le détail du conditionnement mais bien de renvoyer Vrai ou Faux selon que la quantité et le type de conditionnement envoyés en paramêtre sont "compatibles". Bien à vous ! -- Marcel Berman c/o Managing Business SPRL Allée du Petit Paris, 11 B - 1410 - Waterloo Tel : +32 2 351.60.64 Fax : +32 2 351.45.78 Gsm : +32 475.799.477
Roumegou
> Alors, j'ai gagné oui ou non !
Ben non ! j'avais déjà corrigé ta 1ere version avec 25 pour dire que cela ne marchait pas. Allez, Ré essaye une fois !!! Eric Eric LAURENT wrote:
C'était pour vour si vous suiviez .... (lol) Si vous voulez du tout cuit, essayez cela, réponse à 100% du cahier des charges:
> Alors, j'ai gagné oui ou non !
Ben non !
j'avais déjà corrigé ta 1ere version avec 25 pour dire que cela ne marchait
pas.
Allez, Ré essaye une fois !!!
Eric
Eric LAURENT wrote:
C'était pour vour si vous suiviez .... (lol)
Si vous voulez du tout cuit, essayez cela, réponse à 100% du cahier
des charges:
Ben non ! j'avais déjà corrigé ta 1ere version avec 25 pour dire que cela ne marchait pas. Allez, Ré essaye une fois !!! Eric Eric LAURENT wrote:
C'était pour vour si vous suiviez .... (lol) Si vous voulez du tout cuit, essayez cela, réponse à 100% du cahier des charges:
Bob Lamar
Dans l'article <bpcr88$2k8$, , dit 'Eric LAURENT', a écrit...
Ouups ! petit correctif: (au fait, j'ai gagné quelque chose ? - peut-être Windev 8 gratuit ou la 7.5 enfin deboggée !) ------------------------------------------------------------
QuantiteTotale est un entier //A livrer Cond40 est un entier //Conditionnement par 40 Cond20 est un entier //Conditionnement par 20
25 dans le cahier de charges
Cond15 est un entier //Conditionnement par 15
Reste1 est un entier Reste2 est un entier Reste3 est un entier
QuantiteTotaleG80
[MODE DEBUGGER ON :) ] QT = 35
Cond40= PartieEntière(QuantiteTotale/40)
= 0
Reste1= modulo(QuantiteTotale,40)
= 35
SI modulo(Reste1,20)>0 ALORS
= 15 (vrai)
SI modulo(Reste1,15)>0 ALORS
= 5 (vrai)
Erreur("Erreur de conditionnement","Vous devez compléter votre commande d'au moins "+ (15-Reste1)+" produits")
15-35 = -20 Qte a rajoutée...
(decidement j'en reste mes 2 boucles de bourrin non mathematicien ;)
-- o laisser la ligne contenant la mention de la personne à qui l'on répond o ne citer que le strict nécessaire, mais citer quelque chose o répondre point par point, en dessous du texte cité o répondre sur usenet:<http://www.giromini.org/usenet-fr/repondre.html>
Dans l'article <bpcr88$2k8$1@news-reader5.wanadoo.fr>,
laurent.systel@wanadoo.fr, dit 'Eric LAURENT', a écrit...
Ouups ! petit correctif: (au fait, j'ai gagné quelque chose ? - peut-être
Windev 8 gratuit ou la 7.5 enfin deboggée !)
------------------------------------------------------------
QuantiteTotale est un entier //A livrer
Cond40 est un entier //Conditionnement par 40
Cond20 est un entier //Conditionnement par 20
25 dans le cahier de charges
Cond15 est un entier //Conditionnement par 15
Reste1 est un entier
Reste2 est un entier
Reste3 est un entier
QuantiteTotaleG80
[MODE DEBUGGER ON :) ]
QT = 35
Cond40= PartieEntière(QuantiteTotale/40)
= 0
Reste1= modulo(QuantiteTotale,40)
= 35
SI modulo(Reste1,20)>0 ALORS
= 15 (vrai)
SI modulo(Reste1,15)>0 ALORS
= 5 (vrai)
Erreur("Erreur de conditionnement","Vous devez compléter votre commande
d'au moins "+ (15-Reste1)+" produits")
15-35 = -20 Qte a rajoutée...
(decidement j'en reste mes 2 boucles de bourrin non mathematicien ;)
--
o laisser la ligne contenant la mention de la personne à qui l'on répond
o ne citer que le strict nécessaire, mais citer quelque chose
o répondre point par point, en dessous du texte cité
o répondre sur usenet:<http://www.giromini.org/usenet-fr/repondre.html>
Dans l'article <bpcr88$2k8$, , dit 'Eric LAURENT', a écrit...
Ouups ! petit correctif: (au fait, j'ai gagné quelque chose ? - peut-être Windev 8 gratuit ou la 7.5 enfin deboggée !) ------------------------------------------------------------
QuantiteTotale est un entier //A livrer Cond40 est un entier //Conditionnement par 40 Cond20 est un entier //Conditionnement par 20
25 dans le cahier de charges
Cond15 est un entier //Conditionnement par 15
Reste1 est un entier Reste2 est un entier Reste3 est un entier
QuantiteTotaleG80
[MODE DEBUGGER ON :) ] QT = 35
Cond40= PartieEntière(QuantiteTotale/40)
= 0
Reste1= modulo(QuantiteTotale,40)
= 35
SI modulo(Reste1,20)>0 ALORS
= 15 (vrai)
SI modulo(Reste1,15)>0 ALORS
= 5 (vrai)
Erreur("Erreur de conditionnement","Vous devez compléter votre commande d'au moins "+ (15-Reste1)+" produits")
15-35 = -20 Qte a rajoutée...
(decidement j'en reste mes 2 boucles de bourrin non mathematicien ;)
-- o laisser la ligne contenant la mention de la personne à qui l'on répond o ne citer que le strict nécessaire, mais citer quelque chose o répondre point par point, en dessous du texte cité o répondre sur usenet:<http://www.giromini.org/usenet-fr/repondre.html>
Eric LAURENT
J'ai pas vu où ça marchait pas. Tu peux préciser.
Roumegou wrote:
Alors, j'ai gagné oui ou non !
Ben non ! j'avais déjà corrigé ta 1ere version avec 25 pour dire que cela ne marchait pas. Allez, Ré essaye une fois !!! Eric Eric LAURENT wrote:
C'était pour vour si vous suiviez .... (lol) Si vous voulez du tout cuit, essayez cela, réponse à 100% du cahier des charges:
J'ai pas vu où ça marchait pas.
Tu peux préciser.
Roumegou wrote:
Alors, j'ai gagné oui ou non !
Ben non !
j'avais déjà corrigé ta 1ere version avec 25 pour dire que cela ne
marchait pas.
Allez, Ré essaye une fois !!!
Eric
Eric LAURENT wrote:
C'était pour vour si vous suiviez .... (lol)
Si vous voulez du tout cuit, essayez cela, réponse à 100% du cahier
des charges:
Ben en copiant ton code dans un bouton et en mettant 4780 , il me répond qu'il en manque au moins 10 produits.
Roumegou wrote:
Alors, j'ai gagné oui ou non !
Ben non ! j'avais déjà corrigé ta 1ere version avec 25 pour dire que cela ne marchait pas. Allez, Ré essaye une fois !!! Eric Eric LAURENT wrote:
C'était pour vour si vous suiviez .... (lol) Si vous voulez du tout cuit, essayez cela, réponse à 100% du cahier des charges:
-- Eric Roumegou
Firetox
Yes effectivement dans ce cas : il faut faire une autre petite boucle ou alors demandez a la procedure de faire cette manip en descendant les diviseur de 1
j'ai rajouter dans la proc une valeur : nombre de fois a faire et ansi je descend dans les diviseur de 1 au deuxieme passage donc le 25 se retrouve a 190 au lieu de 191 et après on continue et hop : ca marche
a vec l'appel : emballage : "40/25/15" quantite : "4780'
chaineR ====> 190 x 25 / 2 x 15
SI TestEmballage(emballage,quantite,(NBFois),ChaineR) ALORS Trace(ChaineR ) SINON Trace("Impossible") FIN
POUR i = 1 A Dimension(emb) emb[i] = Val(ExtraitChaîne(emballage,i,"/")) Divis[i] = PartieEntière(qte/emb[i]) SI Divis[i] > fois ALORS fois = Divis[i] FIN FIN
TANTQUE fois > 0 res = ""; Res2 = "" POUR j = 1 A Dimension(Divis) rest = qte - ((Divis[j] * emb[j])) i = j+1 SI Divis[j]> 0 ALORS id=1 res = Divis[j] + " x "+emb[j] + " / " TANTQUE i <= Dimension(emb) SI rest >= emb[i] ALORS id++ rest = rest - emb[i] rest = rest - (PartieEntière(rest /emb[i])* emb[i]) i=j+1 FIN SI rest = 0 ALORS Res2 += id+" x "+emb[i] + " / " SORTIR FIN Res2 = "" i++ FIN FIN SI rest = 0 ALORS SORTIR res = "" FIN fois-- SI rest > 0 ET fois > 0 ALORS // on enleve 1 a tous les mutliplicateur POUR i = 1 A Dimension(emb) Divis[i] = PartieEntière(qte/emb[i])-1 FIN rest = 0 FIN
FIN ChaineRetour = res + Res2 SI rest = 0 ALORS RENVOYER Vrai RENVOYER Faux
"Roumegou" a écrit dans le message de news: bpcqus$3qq$
Firetox wrote: > essaye avec ca : > Ca marchera pas ... Le test qui tue c'est 4780 (par ex)
Yes effectivement dans ce cas :
il faut faire une autre petite boucle ou alors demandez a la procedure de
faire
cette manip en descendant les diviseur de 1
j'ai rajouter dans la proc une valeur : nombre de fois a faire
et ansi je descend dans les diviseur de 1 au deuxieme passage donc le 25 se
retrouve a 190 au lieu de 191
et après on continue et hop : ca marche
a vec l'appel :
emballage : "40/25/15"
quantite : "4780'
chaineR ====> 190 x 25 / 2 x 15
SI TestEmballage(emballage,quantite,(NBFois),ChaineR) ALORS
Trace(ChaineR )
SINON
Trace("Impossible")
FIN
POUR i = 1 A Dimension(emb)
emb[i] = Val(ExtraitChaîne(emballage,i,"/"))
Divis[i] = PartieEntière(qte/emb[i])
SI Divis[i] > fois ALORS
fois = Divis[i]
FIN
FIN
TANTQUE fois > 0
res = ""; Res2 = ""
POUR j = 1 A Dimension(Divis)
rest = qte - ((Divis[j] * emb[j]))
i = j+1
SI Divis[j]> 0 ALORS
id=1
res = Divis[j] + " x "+emb[j] + " / "
TANTQUE i <= Dimension(emb)
SI rest >= emb[i] ALORS
id++
rest = rest - emb[i]
rest = rest - (PartieEntière(rest /emb[i])* emb[i])
i=j+1
FIN
SI rest = 0 ALORS
Res2 += id+" x "+emb[i] + " / "
SORTIR
FIN
Res2 = ""
i++
FIN
FIN
SI rest = 0 ALORS SORTIR
res = ""
FIN
fois--
SI rest > 0 ET fois > 0 ALORS
// on enleve 1 a tous les mutliplicateur
POUR i = 1 A Dimension(emb)
Divis[i] = PartieEntière(qte/emb[i])-1
FIN
rest = 0
FIN
FIN
ChaineRetour = res + Res2
SI rest = 0 ALORS RENVOYER Vrai
RENVOYER Faux
Yes effectivement dans ce cas : il faut faire une autre petite boucle ou alors demandez a la procedure de faire cette manip en descendant les diviseur de 1
j'ai rajouter dans la proc une valeur : nombre de fois a faire et ansi je descend dans les diviseur de 1 au deuxieme passage donc le 25 se retrouve a 190 au lieu de 191 et après on continue et hop : ca marche
a vec l'appel : emballage : "40/25/15" quantite : "4780'
chaineR ====> 190 x 25 / 2 x 15
SI TestEmballage(emballage,quantite,(NBFois),ChaineR) ALORS Trace(ChaineR ) SINON Trace("Impossible") FIN
POUR i = 1 A Dimension(emb) emb[i] = Val(ExtraitChaîne(emballage,i,"/")) Divis[i] = PartieEntière(qte/emb[i]) SI Divis[i] > fois ALORS fois = Divis[i] FIN FIN
TANTQUE fois > 0 res = ""; Res2 = "" POUR j = 1 A Dimension(Divis) rest = qte - ((Divis[j] * emb[j])) i = j+1 SI Divis[j]> 0 ALORS id=1 res = Divis[j] + " x "+emb[j] + " / " TANTQUE i <= Dimension(emb) SI rest >= emb[i] ALORS id++ rest = rest - emb[i] rest = rest - (PartieEntière(rest /emb[i])* emb[i]) i=j+1 FIN SI rest = 0 ALORS Res2 += id+" x "+emb[i] + " / " SORTIR FIN Res2 = "" i++ FIN FIN SI rest = 0 ALORS SORTIR res = "" FIN fois-- SI rest > 0 ET fois > 0 ALORS // on enleve 1 a tous les mutliplicateur POUR i = 1 A Dimension(emb) Divis[i] = PartieEntière(qte/emb[i])-1 FIN rest = 0 FIN
FIN ChaineRetour = res + Res2 SI rest = 0 ALORS RENVOYER Vrai RENVOYER Faux
"Roumegou" a écrit dans le message de news: bpcqus$3qq$
Firetox wrote: > essaye avec ca : > Ca marchera pas ... Le test qui tue c'est 4780 (par ex)
Firetox
Yes effectivement dans ce cas : il faut faire une autre petite boucle ou alors demandez a la procedure de faire cette manip en descendant les diviseur de 1
et ansi je descend dans les diviseur de 1 au deuxieme passage donc le 25 se retrouve a 190 au lieu de 191 et après on continue et hop : ca marche
a vec l'appel : emballage : "40/25/15" quantite : "4780'
chaineR ====> 190 x 25 / 2 x 15
SI TestEmballage(emballage,quantite,ChaineR) ALORS Trace(ChaineR ) SINON Trace("Impossible") FIN
POUR i = 1 A Dimension(emb) emb[i] = Val(ExtraitChaîne(emballage,i,"/")) Divis[i] = PartieEntière(qte/emb[i]) SI Divis[i] > fois ALORS fois = Divis[i] FIN FIN
TANTQUE fois > 0 res = ""; Res2 = "" POUR j = 1 A Dimension(Divis) rest = qte - ((Divis[j] * emb[j])) i = j+1 SI Divis[j]> 0 ALORS id=1 res = Divis[j] + " x "+emb[j] + " / " TANTQUE i <= Dimension(emb) SI rest >= emb[i] ALORS id++ rest = rest - emb[i] rest = rest - (PartieEntière(rest /emb[i])* emb[i]) i=j+1 FIN SI rest = 0 ALORS Res2 += id+" x "+emb[i] + " / " SORTIR FIN Res2 = "" i++ FIN FIN SI rest = 0 ALORS SORTIR res = "" FIN fois-- SI rest > 0 ET fois > 0 ALORS // on enleve 1 a tous les mutliplicateur POUR i = 1 A Dimension(emb) Divis[i] = PartieEntière(qte/emb[i])-1 FIN rest = 0 FIN
FIN ChaineRetour = res + Res2 SI rest = 0 ALORS RENVOYER Vrai RENVOYER Faux
"Roumegou" a écrit dans le message de news: bpcqus$3qq$ > Firetox wrote: > > essaye avec ca : > > > Ca marchera pas ... > Le test qui tue c'est 4780 (par ex) > >
Yes effectivement dans ce cas :
il faut faire une autre petite boucle ou alors demandez a la procedure de
faire
cette manip en descendant les diviseur de 1
et ansi je descend dans les diviseur de 1 au deuxieme passage donc le 25 se
retrouve a 190 au lieu de 191
et après on continue et hop : ca marche
a vec l'appel :
emballage : "40/25/15"
quantite : "4780'
chaineR ====> 190 x 25 / 2 x 15
SI TestEmballage(emballage,quantite,ChaineR) ALORS
Trace(ChaineR )
SINON
Trace("Impossible")
FIN
POUR i = 1 A Dimension(emb)
emb[i] = Val(ExtraitChaîne(emballage,i,"/"))
Divis[i] = PartieEntière(qte/emb[i])
SI Divis[i] > fois ALORS
fois = Divis[i]
FIN
FIN
TANTQUE fois > 0
res = ""; Res2 = ""
POUR j = 1 A Dimension(Divis)
rest = qte - ((Divis[j] * emb[j]))
i = j+1
SI Divis[j]> 0 ALORS
id=1
res = Divis[j] + " x "+emb[j] + " / "
TANTQUE i <= Dimension(emb)
SI rest >= emb[i] ALORS
id++
rest = rest - emb[i]
rest = rest - (PartieEntière(rest /emb[i])* emb[i])
i=j+1
FIN
SI rest = 0 ALORS
Res2 += id+" x "+emb[i] + " / "
SORTIR
FIN
Res2 = ""
i++
FIN
FIN
SI rest = 0 ALORS SORTIR
res = ""
FIN
fois--
SI rest > 0 ET fois > 0 ALORS
// on enleve 1 a tous les mutliplicateur
POUR i = 1 A Dimension(emb)
Divis[i] = PartieEntière(qte/emb[i])-1
FIN
rest = 0
FIN
FIN
ChaineRetour = res + Res2
SI rest = 0 ALORS RENVOYER Vrai
RENVOYER Faux
"Roumegou" <roumegou@wanadoo.fr> a écrit dans le message de news:
bpcqus$3qq$1@news-reader2.wanadoo.fr...
> Firetox wrote:
> > essaye avec ca :
> >
> Ca marchera pas ...
> Le test qui tue c'est 4780 (par ex)
>
>
Yes effectivement dans ce cas : il faut faire une autre petite boucle ou alors demandez a la procedure de faire cette manip en descendant les diviseur de 1
et ansi je descend dans les diviseur de 1 au deuxieme passage donc le 25 se retrouve a 190 au lieu de 191 et après on continue et hop : ca marche
a vec l'appel : emballage : "40/25/15" quantite : "4780'
chaineR ====> 190 x 25 / 2 x 15
SI TestEmballage(emballage,quantite,ChaineR) ALORS Trace(ChaineR ) SINON Trace("Impossible") FIN
POUR i = 1 A Dimension(emb) emb[i] = Val(ExtraitChaîne(emballage,i,"/")) Divis[i] = PartieEntière(qte/emb[i]) SI Divis[i] > fois ALORS fois = Divis[i] FIN FIN
TANTQUE fois > 0 res = ""; Res2 = "" POUR j = 1 A Dimension(Divis) rest = qte - ((Divis[j] * emb[j])) i = j+1 SI Divis[j]> 0 ALORS id=1 res = Divis[j] + " x "+emb[j] + " / " TANTQUE i <= Dimension(emb) SI rest >= emb[i] ALORS id++ rest = rest - emb[i] rest = rest - (PartieEntière(rest /emb[i])* emb[i]) i=j+1 FIN SI rest = 0 ALORS Res2 += id+" x "+emb[i] + " / " SORTIR FIN Res2 = "" i++ FIN FIN SI rest = 0 ALORS SORTIR res = "" FIN fois-- SI rest > 0 ET fois > 0 ALORS // on enleve 1 a tous les mutliplicateur POUR i = 1 A Dimension(emb) Divis[i] = PartieEntière(qte/emb[i])-1 FIN rest = 0 FIN
FIN ChaineRetour = res + Res2 SI rest = 0 ALORS RENVOYER Vrai RENVOYER Faux
"Roumegou" a écrit dans le message de news: bpcqus$3qq$ > Firetox wrote: > > essaye avec ca : > > > Ca marchera pas ... > Le test qui tue c'est 4780 (par ex) > >