Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

casse-tete : essayez ca.... (pour firetox et r**megou entre autres)

17 réponses
Avatar
Fabrice Burghgraeve
bon celui la il a l'air de marcher.
J'ai pas verifier l'algo de firetox
J'ai essayé avec 4780 : c'est bon
avec 4781 : c'est pas bon.

notez le temps mis pour dire que c'est pas bon pour les gros nombres.
ET la le tableau ne fait que trois elements.
Notez aussi la compacite du code grace a une ecriture recursive plutot
qu'iterative...

---------------- code du bouton pour tester la fonction ------------

tb_a_tester est un tableau de 3 entiers
nb_a_tester est un entier
tb_a_tester[1]=40
tb_a_tester[2]=25
tb_a_tester[3]=15

nb_a_tester=Saisie1

SI tester_condi_recursif(tb_a_tester,3,nb_a_tester) ALORS
Info("c'est bon");
SINON
Info("c'est pas bon");
FIN

idx est un entier

POUR idx = 1 A 100000
SI tester_condi_recursif(tb_a_tester,3,idx) ALORS
Info(idx+" convient");
FIN
FIN

------------------ CODE INTERESSANT (a priori) ---------------
FONCTION tester_condi_recursif(tb_a_tester,taille_tb,nb_a_tester)

SI nb_a_tester = 0 ALORS RENVOYER Vrai
SI taille_tb = 1 ALORS
SI modulo(nb_a_tester,tb_a_tester[1]) = 0 ALORS
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
FIN

idx est un entier
nb_occur est un entier = nb_a_tester / tb_a_tester[taille_tb]
SI tester_condi_recursif(tb_a_tester,taille_tb-1,nb_a_tester) ALORS RENVOYER
Vrai

POUR idx=nb_occur A 1 PAS -1
SI
tester_condi_recursif(tb_a_tester,taille_tb-1,nb_a_tester-idx*tb_a_tester[ta
ille_tb]) ALORS
RENVOYER Vrai
FIN
FIN

RENVOYER Faux

--
Fabrice Burghgraeve
Computer & Services
suivez ce lien pour me repondre en prive :
http://cerbermail.com/?I3GMPRuXDD

10 réponses

1 2
Avatar
Firetox
Oui c'est joli

mais le code de Bob lamar a ete donne
depuis longtemps, mais la on avance pas.

bon d'accord sur le fait que ca dise OK ou pas OK mais je suis alle plus
loin
et c'est la que ca coince : donnez la solution retenue pour dire oui
et la ca commence a devenir chaud : renvoyez le nombre de C1 de C2 et C3

voila
car ca fait longtemps que je sais repondre oui ou non mais faire revenir une
solution
c'est plus difficile , comment choisir les cartons

en partant du principe qu'on veut le plus dans les plus gros et ansi de
suite.
je suis coince sur le fait que dans 110 il n'y a pas de fois 25 dans la
solution
donc ma procedure dit que c'est pas possible

a suivre

"Fabrice Burghgraeve" a
écrit dans le message de news: bpd9vl$iat$
bon celui la il a l'air de marcher.
J'ai pas verifier l'algo de firetox
J'ai essayé avec 4780 : c'est bon
avec 4781 : c'est pas bon.

notez le temps mis pour dire que c'est pas bon pour les gros nombres.
ET la le tableau ne fait que trois elements.
Notez aussi la compacite du code grace a une ecriture recursive plutot
qu'iterative...

---------------- code du bouton pour tester la fonction ------------

tb_a_tester est un tableau de 3 entiers
nb_a_tester est un entier
tb_a_tester[1]@
tb_a_tester[2]%
tb_a_tester[3]

nb_a_tester=Saisie1

SI tester_condi_recursif(tb_a_tester,3,nb_a_tester) ALORS
Info("c'est bon");
SINON
Info("c'est pas bon");
FIN

idx est un entier

POUR idx = 1 A 100000
SI tester_condi_recursif(tb_a_tester,3,idx) ALORS
Info(idx+" convient");
FIN
FIN

------------------ CODE INTERESSANT (a priori) ---------------
FONCTION tester_condi_recursif(tb_a_tester,taille_tb,nb_a_tester)

SI nb_a_tester = 0 ALORS RENVOYER Vrai
SI taille_tb = 1 ALORS
SI modulo(nb_a_tester,tb_a_tester[1]) = 0 ALORS
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
FIN

idx est un entier
nb_occur est un entier = nb_a_tester / tb_a_tester[taille_tb]
SI tester_condi_recursif(tb_a_tester,taille_tb-1,nb_a_tester) ALORS


RENVOYER
Vrai

POUR idx=nb_occur A 1 PAS -1
SI



tester_condi_recursif(tb_a_tester,taille_tb-1,nb_a_tester-idx*tb_a_tester[ta
ille_tb]) ALORS
RENVOYER Vrai
FIN
FIN

RENVOYER Faux

--
Fabrice Burghgraeve
Computer & Services
suivez ce lien pour me repondre en prive :
http://cerbermail.com/?I3GMPRuXDD




Avatar
Fabrice Burghgraeve
salut.

"Firetox" a écrit dans le message de
news:bpdai2$5mf$
Oui c'est joli

mais le code de Bob lamar a ete donne
depuis longtemps, mais la on avance pas.



desole j'ai pas vu j'ai du le rater dans tout le thread...


bon d'accord sur le fait que ca dise OK ou pas OK mais je suis alle plus
loin
et c'est la que ca coince : donnez la solution retenue pour dire oui
et la ca commence a devenir chaud : renvoyez le nombre de C1 de C2 et C3



bof. j'te fais ca tout de suite (disons dans 10 minutes)
comme je le disais, le probleme est le meme...


voila
car ca fait longtemps que je sais repondre oui ou non mais faire revenir


une
solution
c'est plus difficile , comment choisir les cartons



non c'est pas plus difficile. tu va voir.


en partant du principe qu'on veut le plus dans les plus gros et ansi de
suite.
je suis coince sur le fait que dans 110 il n'y a pas de fois 25 dans la
solution
donc ma procedure dit que c'est pas possible



essaye la mienne, elle te dira que c'est bon...


a suivre




la suite dans quelques minutes...

(...)

--
Fabrice Burghgraeve
Computer & Services
suivez ce lien pour me repondre en prive :
http://cerbermail.com/?I3GMPRuXDD
Avatar
Discret
Bonjour,

Essayez ça :

// C1 C2 et C3sont les conditionnements (15 25 40 par exemple)
// Attention il faut C3 > C2 > C1
// Q est la quantité commandée

mReste est un entier

Q1 est un entier // Nombre de C1
Q2 est un entier // Nombre de C2
Q3 est un entier // Nombre de C3

mReste = Q

CestBon est un booleen
CestBon = faux

BOUCLE
// Calcul du nombre de C3 possible
si mReste >= C3
// Max de C3 possible
Q3 = partieentiere(mReste / C3)
mReste = mReste - (Q3 * C3)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
// mReste < C3
si mReste >= C2
// Max de C2 possible
Q2 = partieentiere(mReste / C2)
mReste = mReste - (Q2 * C2)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si mReste >= C1
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si Q3 + Q2 = 0
bip
erreur("Conditionnement impossible.")
RETOUR
sinon
SORTIR
FIN
FIN
FIN
FIn
FIN

si CestBon = faux
BOUCLE
si Q2 > 0
Q2 = Q2 - 1
mReste = Q - Q3*C3 - Q2*C2
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si Q3 > 0
Q3 = Q3 - 1
mReste = Q - Q3*C3
// Max de C2
Q2 = partieentiere(mReste / C2)
mReste = mReste - (Q2 * C2)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
FIN
FIN
FIN
FIN

SI CestBon = Vrai
bip
info(Q3 + "*" + C3 + " + " + Q2 + "*" + C2 + " + " + Q1 + "*" + C1)
sinon
bip
erreur("Impossible à conditionner.")
FIN

@+ Laurent
Avatar
Eric LAURENT
Attention, si Q à une valeur comme par exemple 26, ton code boucle sans fin




Discret wrote:
Bonjour,

Essayez ça :

// C1 C2 et C3sont les conditionnements (15 25 40 par exemple)
// Attention il faut C3 > C2 > C1
// Q est la quantité commandée

mReste est un entier

Q1 est un entier // Nombre de C1
Q2 est un entier // Nombre de C2
Q3 est un entier // Nombre de C3

mReste = Q

CestBon est un booleen
CestBon = faux

BOUCLE
// Calcul du nombre de C3 possible
si mReste >= C3
// Max de C3 possible
Q3 = partieentiere(mReste / C3)
mReste = mReste - (Q3 * C3)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
// mReste < C3
si mReste >= C2
// Max de C2 possible
Q2 = partieentiere(mReste / C2)
mReste = mReste - (Q2 * C2)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si mReste >= C1
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si Q3 + Q2 = 0
bip
erreur("Conditionnement impossible.")
RETOUR
sinon
SORTIR
FIN
FIN
FIN
FIn
FIN

si CestBon = faux
BOUCLE
si Q2 > 0
Q2 = Q2 - 1
mReste = Q - Q3*C3 - Q2*C2
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si Q3 > 0
Q3 = Q3 - 1
mReste = Q - Q3*C3
// Max de C2
Q2 = partieentiere(mReste / C2)
mReste = mReste - (Q2 * C2)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
FIN
FIN
FIN
FIN

SI CestBon = Vrai
bip
info(Q3 + "*" + C3 + " + " + Q2 + "*" + C2 + " + " + Q1 + "*" + C1)
sinon
bip
erreur("Impossible à conditionner.")
FIN

@+ Laurent


Avatar
Discret
Fort Juste !

Petite modif sur la fin :

// C1 C2 et C3sont les conditionnements (15 25 40 par exemple)
// Attention il faut C3 > C2 > C1
// Q est la quantité commandée

mReste est un entier

Q1 est un entier // Nombre de C1
Q2 est un entier // Nombre de C2
Q3 est un entier // Nombre de C3

mReste = Q

CestBon est un booleen
CestBon = faux
stop
BOUCLE
// Calcul du nombre de C3 possible
si mReste >= C3
// Max de C3 possible
Q3 = partieentiere(mReste / C3)
mReste = mReste - (Q3 * C3)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
// mReste < C3
si mReste >= C2
// Max de C2 possible
Q2 = partieentiere(mReste / C2)
mReste = mReste - (Q2 * C2)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si mReste >= C1
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si Q3 + Q2 = 0
bip
erreur("Conditionnement impossible.")
RETOUR
sinon
SORTIR
FIN
FIN
FIN
FIn
FIN

si CestBon = faux
BOUCLE
si Q2 > 0
Q2 = Q2 - 1
mReste = Q - Q3*C3 - Q2*C2
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si Q3 > 0
Q3 = Q3 - 1
mReste = Q - Q3*C3
// Max de C2
Q2 = partieentiere(mReste / C2)
mReste = mReste - (Q2 * C2)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
si Q3 + Q2 = 0
SORTIR
FIN
FIN
FIN
FIN
FIN

SI CestBon = Vrai
bip
info(Q3 + "*" + C3 + " + " + Q2 + "*" + C2 + " + " + Q1 + "*" + C1)
sinon
bip
erreur("Impossible à conditionner.")
FIN


"Eric LAURENT" a écrit dans le message de news:
bpddn4$lvh$
Attention, si Q à une valeur comme par exemple 26, ton code boucle sans


fin




Discret wrote:
> Bonjour,
>
> Essayez ça :
>
> // C1 C2 et C3sont les conditionnements (15 25 40 par exemple)
> // Attention il faut C3 > C2 > C1
> // Q est la quantité commandée
>
> mReste est un entier
>
> Q1 est un entier // Nombre de C1
> Q2 est un entier // Nombre de C2
> Q3 est un entier // Nombre de C3
>
> mReste = Q
>
> CestBon est un booleen
> CestBon = faux
>
> BOUCLE
> // Calcul du nombre de C3 possible
> si mReste >= C3
> // Max de C3 possible
> Q3 = partieentiere(mReste / C3)
> mReste = mReste - (Q3 * C3)
> si mReste = 0
> CestBon = Vrai
> SORTIR
> FIN
> sinon
> // mReste < C3
> si mReste >= C2
> // Max de C2 possible
> Q2 = partieentiere(mReste / C2)
> mReste = mReste - (Q2 * C2)
> si mReste = 0
> CestBon = Vrai
> SORTIR
> FIN
> sinon
> si mReste >= C1
> // Max de C1
> Q1 = partieentiere(mReste / C1)
> mReste = mReste - (Q1 * C1)
> si mReste = 0
> CestBon = Vrai
> SORTIR
> FIN
> sinon
> si Q3 + Q2 = 0
> bip
> erreur("Conditionnement impossible.")
> RETOUR
> sinon
> SORTIR
> FIN
> FIN
> FIN
> FIn
> FIN
>
> si CestBon = faux
> BOUCLE
> si Q2 > 0
> Q2 = Q2 - 1
> mReste = Q - Q3*C3 - Q2*C2
> // Max de C1
> Q1 = partieentiere(mReste / C1)
> mReste = mReste - (Q1 * C1)
> si mReste = 0
> CestBon = Vrai
> SORTIR
> FIN
> sinon
> si Q3 > 0
> Q3 = Q3 - 1
> mReste = Q - Q3*C3
> // Max de C2
> Q2 = partieentiere(mReste / C2)
> mReste = mReste - (Q2 * C2)
> si mReste = 0
> CestBon = Vrai
> SORTIR
> FIN
> // Max de C1
> Q1 = partieentiere(mReste / C1)
> mReste = mReste - (Q1 * C1)
> si mReste = 0
> CestBon = Vrai
> SORTIR
> FIN
> sinon
> Q1 = partieentiere(mReste / C1)
> mReste = mReste - (Q1 * C1)
> si mReste = 0
> CestBon = Vrai
> SORTIR
> FIN
> FIN
> FIN
> FIN
> FIN
>
> SI CestBon = Vrai
> bip
> info(Q3 + "*" + C3 + " + " + Q2 + "*" + C2 + " + " + Q1 + "*" + C1)
> sinon
> bip
> erreur("Impossible à conditionner.")
> FIN
>
> @+ Laurent




Avatar
Fabrice Burghgraeve
re-re-re

"Fabrice Burghgraeve" a
écrit dans le message de news:bpdcma$jj5$
salut.

"Firetox" a écrit dans le message de
news:bpdai2$5mf$
> Oui c'est joli
>
> mais le code de Bob lamar a ete donne
> depuis longtemps, mais la on avance pas.

desole j'ai pas vu j'ai du le rater dans tout le thread...

>
> bon d'accord sur le fait que ca dise OK ou pas OK mais je suis alle plus
> loin
> et c'est la que ca coince : donnez la solution retenue pour dire oui
> et la ca commence a devenir chaud : renvoyez le nombre de C1 de C2 et C3

bof. j'te fais ca tout de suite (disons dans 10 minutes)
comme je le disais, le probleme est le meme...




voila voila le beau code qui va bien...
(j'ai mis un peu plus de temps que prevu j'espere que tu m'excuse je m'etais
embrouille avec un nom de variable)

-------- CODE DE LA FONCTION (j'vais arreter de dire que c'est
interessant) ----------------

FONCTION
tester_condi_recursif(tb_a_tester,taille_tb,nb_a_tester,chaine_a_retourner)

SI nb_a_tester = 0 ALORS
chaine_a_retourner = "."
RENVOYER Vrai
FIN
SI taille_tb = 1 ALORS
SI modulo(nb_a_tester,tb_a_tester[1]) = 0 ALORS
chaine_a_retourner = "
"+NumériqueVersChaine(tb_a_tester[1])+"*"+NumériqueVersChaine(nb_a_tester/tb
_a_tester[1])
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
FIN

idx est un entier
nb_occur est un entier = nb_a_tester / tb_a_tester[taille_tb]
SI
tester_condi_recursif(tb_a_tester,taille_tb-1,nb_a_tester,chaine_a_retourner
) ALORS
RENVOYER Vrai
FIN

POUR idx=nb_occur A 1 PAS -1
SI
tester_condi_recursif(tb_a_tester,taille_tb-1,nb_a_tester-idx*tb_a_tester[ta
ille_tb],chaine_a_retourner) ALORS
chaine_a_retourner=chaine_a_retourner+"
"+NumériqueVersChaine(tb_a_tester[taille_tb])+"*"+NumériqueVersChaine(idx)
RENVOYER Vrai
FIN
FIN

RENVOYER Faux



-------- code du bouton de test --------------
tb_a_tester est un tableau de 3 entiers
nb_a_tester est un entier
tb_a_tester[1]@
tb_a_tester[2]%
tb_a_tester[3]

nb_a_tester=Saisie1
ch est une chaîne

SI tester_condi_recursif(tb_a_tester,3,nb_a_tester,ch) ALORS
Info(ch)
SINON
Info("ah ben non alors");
FIN

idx est un entier
POUR idx=1 A 1000
SI tester_condi_recursif(tb_a_tester,3,idx,ch) ALORS
Info(idx+" se décompose en : "+ch)
FIN
FIN



Alors t'es satisfait cette fois ?


--
Fabrice Burghgraeve
Computer & Services
suivez ce lien pour me repondre en prive :
http://cerbermail.com/?I3GMPRuXDD
Avatar
Eric LAURENT
C'est nickel chrome.
Bravo !

Peux-tu aussi donner l'age du capitaine ?


Discret wrote:
Fort Juste !

Petite modif sur la fin :

// C1 C2 et C3sont les conditionnements (15 25 40 par exemple)
// Attention il faut C3 > C2 > C1
// Q est la quantité commandée

mReste est un entier

Q1 est un entier // Nombre de C1
Q2 est un entier // Nombre de C2
Q3 est un entier // Nombre de C3

mReste = Q

CestBon est un booleen
CestBon = faux
stop
BOUCLE
// Calcul du nombre de C3 possible
si mReste >= C3
// Max de C3 possible
Q3 = partieentiere(mReste / C3)
mReste = mReste - (Q3 * C3)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
// mReste < C3
si mReste >= C2
// Max de C2 possible
Q2 = partieentiere(mReste / C2)
mReste = mReste - (Q2 * C2)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si mReste >= C1
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si Q3 + Q2 = 0
bip
erreur("Conditionnement impossible.")
RETOUR
sinon
SORTIR
FIN
FIN
FIN
FIn
FIN

si CestBon = faux
BOUCLE
si Q2 > 0
Q2 = Q2 - 1
mReste = Q - Q3*C3 - Q2*C2
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
si Q3 > 0
Q3 = Q3 - 1
mReste = Q - Q3*C3
// Max de C2
Q2 = partieentiere(mReste / C2)
mReste = mReste - (Q2 * C2)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
// Max de C1
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
sinon
Q1 = partieentiere(mReste / C1)
mReste = mReste - (Q1 * C1)
si mReste = 0
CestBon = Vrai
SORTIR
FIN
si Q3 + Q2 = 0
SORTIR
FIN
FIN
FIN
FIN
FIN

SI CestBon = Vrai
bip
info(Q3 + "*" + C3 + " + " + Q2 + "*" + C2 + " + " + Q1 + "*" + C1)
sinon
bip
erreur("Impossible à conditionner.")
FIN



Avatar
Discret
"Eric LAURENT" a écrit dans le message de news:
bpdft8$m9k$
C'est nickel chrome.
Bravo !

Peux-tu aussi donner l'age du capitaine ?




Ca dépend de la quantité d'assiettes ?

;-)

@+ Laurent
Avatar
Fabrice Burghgraeve
salut.

"Eric LAURENT" a écrit dans le message de
news:bpdft8$m9k$
C'est nickel chrome.
Bravo !

Peux-tu aussi donner l'age du capitaine ?




euh j'ai des problemes de synchro, donc je perds completment le fil
(jeu de mot pourri avec thread sans le faire expres :-p )

Je vois meme pas le rapport avec le fil que j'ai initie...

C'est nickel chrome cette methode ?
J'avais cru comprendre que le nombre de conditionnement pouvait etre
variable.
(mais j'ai mem pas le post initial alors j'ai peut-etre mal compris)

Cette methode ne marche pas si il y a 5 conditionnements.

On peut l'étendre, mais ca fait une tartine pas possible.
et en plus apres il peut y avoir 6 conditionnements...

avec le bout de code que j'ai donne, tu passes un tableau de taille de
conditionnement de la taille que tu veux, ca marche...

Juste ce que j'ai pas fait, c'est de transformer la chaine 25/15/40 en
tableau d'entiers mais c'est pas la le probleme...




Discret wrote:
> Fort Juste !
>
> Petite modif sur la fin :
>
> // C1 C2 et C3sont les conditionnements (15 25 40 par exemple)
> // Attention il faut C3 > C2 > C1
> // Q est la quantité commandée
>
> mReste est un entier
>
> Q1 est un entier // Nombre de C1
> Q2 est un entier // Nombre de C2
> Q3 est un entier // Nombre de C3
>
> mReste = Q
>
> CestBon est un booleen
> CestBon = faux



(...)

> SORTIR
> FIN
> FIN
> FIN
> FIN
> FIN
>
> SI CestBon = Vrai
> bip
> info(Q3 + "*" + C3 + " + " + Q2 + "*" + C2 + " + " + Q1 + "*" + C1)
> sinon
> bip
> erreur("Impossible à conditionner.")
> FIN




--
Fabrice Burghgraeve
Computer & Services
suivez ce lien pour me repondre en prive :
http://cerbermail.com/?I3GMPRuXDD
Avatar
Discret
Voila le post initial :

Bonsoir à tous,

Petit casse-tête entre amis...

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)




Il n'a pas été dit que le nombre de conditionnements pouvait être supérieur
à 3.

@+ Laurent


"Fabrice Burghgraeve" a
écrit dans le message de news: bpdjf8$mip$
salut.

"Eric LAURENT" a écrit dans le message de
news:bpdft8$m9k$
> C'est nickel chrome.
> Bravo !
>
> Peux-tu aussi donner l'age du capitaine ?
>

euh j'ai des problemes de synchro, donc je perds completment le fil
(jeu de mot pourri avec thread sans le faire expres :-p )

Je vois meme pas le rapport avec le fil que j'ai initie...

C'est nickel chrome cette methode ?
J'avais cru comprendre que le nombre de conditionnement pouvait etre
variable.
(mais j'ai mem pas le post initial alors j'ai peut-etre mal compris)

Cette methode ne marche pas si il y a 5 conditionnements.

On peut l'étendre, mais ca fait une tartine pas possible.
et en plus apres il peut y avoir 6 conditionnements...

avec le bout de code que j'ai donne, tu passes un tableau de taille de
conditionnement de la taille que tu veux, ca marche...

Juste ce que j'ai pas fait, c'est de transformer la chaine 25/15/40 en
tableau d'entiers mais c'est pas la le probleme...



>
> Discret wrote:
> > Fort Juste !
> >
> > Petite modif sur la fin :
> >
> > // C1 C2 et C3sont les conditionnements (15 25 40 par exemple)
> > // Attention il faut C3 > C2 > C1
> > // Q est la quantité commandée
> >
> > mReste est un entier
> >
> > Q1 est un entier // Nombre de C1
> > Q2 est un entier // Nombre de C2
> > Q3 est un entier // Nombre de C3
> >
> > mReste = Q
> >
> > CestBon est un booleen
> > CestBon = faux

(...)

> > SORTIR
> > FIN
> > FIN
> > FIN
> > FIN
> > FIN
> >
> > SI CestBon = Vrai
> > bip
> > info(Q3 + "*" + C3 + " + " + Q2 + "*" + C2 + " + " + Q1 + "*" + C1)
> > sinon
> > bip
> > erreur("Impossible à conditionner.")
> > FIN


--
Fabrice Burghgraeve
Computer & Services
suivez ce lien pour me repondre en prive :
http://cerbermail.com/?I3GMPRuXDD




1 2