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 :

Transposition de grammes en pourcentage


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Transposition de grammes en pourcentage
    Bonjour chère communauté,
    Cela fait maintenant un moment que je n'ai plus écrit de message ici mais je rencontre actuellement un problème dans la résolution d'un projet pro.
    Je vais essayer d'être clair :
    Parlons d'une donnée, une formule.
    Elle est définie par un nom et une liste de valeurs, 16 plus exactement. Je traite des valeurs en pourcentage. Et la somme des 16 pourcentages doit logiquement donner 100%.
    Or, je peux aussi définir ces 16 pourcentages à partir de données en grammes.
    Je défini valeur1 = 16g, valeur2 = 18g, valeur3 = 45g, etc...
    Une fois que l'utilisateur a rentré ses valeurs, mon application calcule la somme des valeurs, puis pour chaque valeur, effectue un produit en croix pour obtenir une valeur en pourcentage.
    Mon_pourcentage = valeur_en_grammes x 100 / somme_des_valeurs_en_grammes.

    Jusque là, tout va bien. Or, je dois traiter toutes les données au dixième, soit, avec uniquement un chiffre après la virgule.
    Et c'est là que ça se corse. Je traduit toutes mes valeurs en pourcentages, puis je les arrondi pour n'avoir qu'un chiffre après la virgule.
    Maintenant, si je fais la somme des pourcentages, je n'ai pas 100, mais 99,9 ou 99,6 ou 100,2. Et c'est très embêtant pour moi.

    Voilà pourquoi je me tourne vers vous. Comment pourrais-je résoudre ce problème ?

    J'ai envisagé une solution. C'était de prendre le delta (100-99,6) et de l'ajouter à la plus grande de mes 16 valeurs pour que le résultat soit le plus proche possible. Mais pour des valeurs superieures à 0,1, je pense qu'il faudrait répartir ce delta sur plusieurs valeurs. Si oui, quel algo mettre en place ?

    Merci par avance !

    Nom : exemple.png
Affichages : 143
Taille : 12,5 Ko

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Une possibilité : tu stockes la sommes des deltas dans une variables. Pour chaque pourcentage calculé arrondi à un chiffre après la virgule, tu ajoutes le delta entre la valeur arrondi et non arrondi à une variable.
    Lorsque la variable est supérieure ou égale à 0.1, alors tu ajoutes 0.1 au pourcentage que tu viens de calculer. Avec cette méthode, j'ai vérifié un peu il me semble que le compte tombera toujours à 100%.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Ca semble fonctionner !
    Je n'y avais pas pensé mais c'est une super bonne idée !
    Merci beaucoup !

    Je marque comme résolu !

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Mmmh, en fait, il y a des cas, ou le résultat n'est pas judicieux.
    Ajouter 0,1g sur une valeur qui en fait 150, ce n'est pas gênant.
    Mais ajouter 0,1g sur une valeur qui en fait 1, c'est beaucoup plus gênant.

    Et pour la solution que tu propose, le 0,1 sera, oui, ajouté, mais de manière "aléatoire" sur une grosse ou une petite valeur.

    Ne pourrions nous pas trouver un algo différent pour résoudre cela ?

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par jerome.savin Voir le message
    Ne pourrions nous pas trouver un algo différent pour résoudre cela ?
    Calculer tes pourcentages et les stocker avec la précision par défaut de ton ordi (au minimum 2 décimales), et afficher avec 1 décimale arrondie...



    Es-tu sûr que tu arrondis "au plus proche", et non "par le bas" ?? 0.551 donne 0.6 ou 0.5 ? (ça devrait donner 0.6)

    x1 = 0.27
    x2 = 0.44
    x3 = 0.29

    Si on suit un "arrondissement" au plus proche :

    x1 = 0.3
    x2 = 0.4
    x3 = 0.3

    total = 1.0

    Si on suit un "arrondi" par troncature :

    x1 = 0.2
    x2 = 0.4
    x3 = 0.2

    total = 0.8
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Bonjour,

    Voilà une solution qui va ajouter les 0.1 manquants où il faut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    pour i = 1 a n
        somm = somm + tb[i]
    fin
    s100 = 100
    Pour i = 1 a n
        pct[i] = arrondi(  tb[i] / somm * s100,1)
        somm = somm - tb[i]
        s100 = s100 - pct[i]
    fin
    Ceci donne des résultats très satisfaisants.
    Mais ce n'est pas la solution parfaite, puisque les résultats dépendent de l'ordre d'arrivée des différentes valeurs.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

Discussions similaires

  1. Réponses: 12
    Dernier message: 29/01/2024, 15h32
  2. Médiane,pourcentage...statistiques
    Par boris_ska dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 11/05/2004, 15h30
  3. Calcul de pourcentage
    Par megazen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/11/2003, 16h43
  4. [C#]pourcentage de mémoire libre du système
    Par jermo dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/10/2003, 17h53
  5. [Algorithme] Pourcentage de similitude de 2 fichiers
    Par Magy_4 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 08/11/2002, 22h42

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