Résolu Ca à l'aire pourtant simple : nombre de boucle variable

Solutions (3)
Tags :
  • simulateur
  • Programmation
|
Je bloque sur un problème qui pourtant semble simple, mais comme je débute...

Dans le cadre d'un simulateur d'achat pour une boutique, je veux lister toutes les possibilités de choisir 3 article dans un catalogue. ( je simplifie un peu le problème)

Le résultat attendu est du style : (Exemple pour 4 articles au catalogue, les clients choisissent 3 articles, parfois 3 fois le même)

Article1 - Article2 - Article3 - Article4
3----------0----------0---------- 0
2----------1----------0---------- 0
2----------0----------1---------- 0
2----------0----------0---------- 1
1----------2----------0---------- 0
1----------1----------1---------- 0
....
bref vous avez compris.... il y a 17 permutations possibles.


Si on connait le nombre d'article la solution est simple et du style boucle for ou while
  1. For (article1=0;artcile1<3;article1++)
  2. {
  3. For (article2=0;artcile2<3;article2++)
  4. {
  5. For (article3=0;artcile3<3;article3++)
  6. {
  7. For (article4=0;artcile4<3;article4++)
  8. {
  9. fonction qui affiche la ligne si on la somme des achats est inf à 3
  10. }
  11. }
  12. }
  13. }
  14. }


On voit bien que dans ma solution le nombre de boucle dépend du nombre d'article.

Comment on fait si le nombre d'article est variable ?

Je pensais simplement faire une "boucle de boucle" en indiçant un tableau article[n] mais cela conduit à des imbrication de boucle qui marchent pas.

Une idée de comment résoudre mon problème ?

Merci à vous.





Contenus similaires
Meilleure solution
partage
|
tu peux penser à l'écriture de tous les nombres de n chiffres en base m
où n est le nombre d'articles dans ton panier et m le nombre d'articles dans le catalogue

ça donnerait un truc du genre :

  1. declarer panier[n]
  2. pour i allant de 0 à m^n
  3. x = i
  4. pour j allant de 0 à n-1
  5. panier[j] = x%n
  6. x = x/n
  7. fonction qui utilise mon panier
  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par BrunoB_66.
  • Commenter cette réponse |
Score
0
òh
òi
|
Mais bien sur que c'est la solution !

Grand merci pour avoir éclairé ma lanterne, j'ai honte de ne pas y avoir pensé.

A noter l'existence de la fonction
phpbase_convert(valeur, 10, m)
qui converti "valeur" de la base 10 vers la base m.

cela donne :

  1. pour i allant de 0 à m^n
  2.  
  3. panier[i] = phpbase_convert(i, 10, m)
  4.  
  5. fonction qui utilise mon panier


Finalement , cela avait l'air simple parce que ça l'était.

Merci encore
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS