IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Soustractions successives avec prix le plus faible


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut Soustractions successives avec prix le plus faible
    Bonjour,
    Tout d'abord, permettez moi de vous souhaitez une bonne et heureuse année 2009 !
    Après avoir essayer de multiples combinaisons et réalisé différentes recherches ici et ailleurs, je n'arrive toujours pas à résoudre mon problème !

    Je travail avec vb6 et une base de données Access 2003.
    J'ai des produits (table produit) qui sont composé de plusieurs contenance (table contenance). Il s'agit en faite de rouleaux de tapisserie qui peuvent faire plusieurs taille (5, 10, 20 mètres par exemple).
    Chaque rouleaux à un prix différent puisque ils ne font pas les mêmes tailles.

    Je voudrais donc réalisé un algorithme qui permettrai de sélectionner le rouleaux qui couvre la plus grande surface, ajouter ce rouleau dans mon "panier" puis soustraire la surface que je viens de traiter à la surface total.

    Voila ce que je fais actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    surfaceRestante = surfaceTotal
    Pour <tous les rouleaux de la tapisserie X>
    |    Si surfaceRestante > (rouleaux.longeur * rouleaux.largeur)
    |    Alors
    |    |    // Ajout ce rouleau dans la liste (+1 unité)
    |    |    surfacerestante = surfaceRestante - (rouleaux.longeur * rouleaux.largeur)
    |    FinSi
    |    Rouleaux.Suivant
    FinPour
    Outre le fait que l'algorithme ne gère pas si nous sommes sur le dernier produit ou pas (pour gérer l'ensemble de la surface à tapisser), le problème qui me gène est le suivant :
    Si j'ai une surface de 24m² par exemple avec des rouleaux de 10m², 5m² et 2m².

    L'algo me sort 2 rouleaux de 10m² et 4m² restant à gérer.
    Un rouleaux de 5m² compléterai la surface restante avec 1m² de reste.
    Le problème :
    Il me sélectionne 2 rouleaux de 2m² et moi j'aimerai un seul de 5m². (car le prix prix est plus avantageux et je pars du principe tarifaire qu'il est plus avantageux d'avoir un peu de reste que d'acheter le compte juste)

    Voila, j'espère avoir été le plus clair possible, et merci d'avance à ceux qui aurait des pistes, voir des solutions

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Petite précision pour les prix, car en me relisant, c'est peut être pas super explicite !

    10m² => 18 euros
    5m² => 10 euros
    2 m² => 6 euros

    On veut 24 m².

    La solution que je voudrais est la suivante : (46 euros)
    - 2 rouleaux de 10m²
    - 1 rouleaux de 5m²
    soit 1m² de rab.

    Mais la solution que j'ai avec mon algo est la suivante : (48 euros)
    - 2 rouleaux de 10m²
    - 2 rouleaux de 2m².
    Certes, je n'ai pas de reste, mais c'est deux euros plus cher que la solution précédente ...

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Tiens, encore un problème de partition d'un entier N, cette fois-ci en acceptant le plus petit majorant de N

    N = a*10 + b*5 + c*2

    a=3 b=0 c=0 -> N=30
    a=2 b=1 c=0 -> N=25
    a=2 b=0 c=2 -> N=24
    a=1 b=3 c=0 -> N=25
    ...
    a=0 b=0 c=12 -> N=24

    reste a calculer les couts pour chaque possibilité et prendre celle qui a le cout le plus faible.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Merci à toi pour ta réponse.
    Je vais essayer de voir ce que je peux faire avec ce système de partition d'entier.

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par DJPi Voir le message
    Merci à toi pour ta réponse.
    Je vais essayer de voir ce que je peux faire avec ce système de partition d'entier.
    fait une recherche sur ce forum, on en a déjà parlé je crois.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Ok,
    Il s'agit bien de partitionner un entier mais le projet à quelque peu été remodeler donc, ça risque de repousser cette étape à plus tard.

    Merci beaucoup pour la solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. hebergement avec le prix le plus bas
    Par hamza11986 dans le forum Hébergement
    Réponses: 3
    Dernier message: 04/12/2011, 17h35
  2. calcul pgdc soustractions successives
    Par mullger dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 12/09/2006, 16h21
  3. Insérer une légende dans une image avec une police plus petite
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 29/04/2006, 14h19
  4. Réponses: 2
    Dernier message: 28/11/2005, 07h24
  5. SELECT avec RAND() mais plus avancé
    Par Sebou San dans le forum Requêtes
    Réponses: 6
    Dernier message: 06/11/2005, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo