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

JavaScript Discussion :

function javascript calcul


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 17
    Par défaut function javascript calcul
    Bonjour,
    De l aide tout le monde.
    Je veux faire une fction qui fonctionne comme suit , elle a pour but de determiner combien de billets de 100 , de 50, de 20, de 10, de 5, de 2 de 1, de 0,25, de 0,1 de 0,5 et enfin de 0,01 y a t il dans un montant x donné.
    CEtte fction doit agir comme suit exemple si x = 60, elle doit dire il y a 1 billet de 50 et 1 billet de 10, mais il doit pas dire il y a 6 billets de 10 ou 3 billets de 20.
    Un autre exemple si x = 15,18 , elle doit dire il y a 1 billet de 10, 1 billet de 5 , 1 billet de 0,1, ; 1 billet de 0,5 et 3 billets de 0,01.
    J y reflechit depuis 2 jours et j arrive pas a trouver la bonne facon
    merci

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    fais une recherche sur
    *100
    for
    div
    mod

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    il te faut un array avec tes "billets" en commençant par le plus grand


    var Billets = new Array(100,50,20,10,5,0.5,0.25,0.1,0.01)

    ensuite il faut prendre ton montant Global et le diviser par le primier Billet, prendre la partie entière et la stocker dans un Array NbreBillets

    il suffit de recupérer le modulo de cette division de le multiplier par la valeur du Billet pour avoir le reste.
    Puis tu recommence l'opération avec le Billets suivant...
    tu récupères ainsi un l'Array du nombre de billets ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Voici un exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <script type="text/javascript">
    var Billets = new Array(100,50,20,10,5,0.5,0.25,0.1,0.01)
    var v = 150.35;
    var n = new Array();
     
    for(var i=0;i<Billets.length;i++) {
    	var d = Billets[i];
    	n[i] = Math.floor(v / d);
    	v %= d; // garde le reste
    	document.write(n[i] + " billets de " + d + "<br />");
    }
     
    </script>
     
    1 billets de 100
    1 billets de 50
    0 billets de 20
    0 billets de 10
    0 billets de 5
    0 billets de 0.5
    1 billets de 0.25
    0 billets de 0.1
    9 billets de 0.01
    On notera un petit problème d'arrondi de javascript, qui a une bonne
    idée pour corriger ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 43
    Par défaut
    Si ta fonction doit minimiser le nombre de billets utilisés, tu es sur le célèbre problème mathématiques du "Sac à dos".

    Imaginons que la somme à trouver soit 82, avec des billets de 50, 41, 10, et 1.
    Avec la méthode décrite plus bas, tu obtiens un billet de 50, 3 de 10, et 2 de 1, soit 6 billets au total, alors que l'optimum est 2 billets de 41.

    L'ennui, c'est que c'est un problème "Non polynomiale". En clair, si tu veux vraiment l'optimum, il faut "quasiment" scanner toutes les solutions. Sinon, tu te contentes d'une méthode qui "marche", comme celle décrite ci-dessous.

    Pour plus d'info, je te laisse regarder sur internet, c'est un problème plutôt amusant ... quand on a du temps.

  6. #6
    Membre expérimenté Avatar de marts
    Inscrit en
    Février 2008
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 233
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function calc(somme)
    	{
    		var billets=[100,50,20,10,5,0.5,0.25,0.1,0.01];
    		var res=[0,0,0,0,0,0,0,0,0];
    		(function()
    		{
    			var n=0;
    			while (somme<billets[n]) n++;
    			res[n]++;
    			somme-=billets[n];
    			if (somme>0) arguments.callee();
    		})();
    		return res;
    	}
    (j'aime bien la récursivité).

  7. #7
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Bonjour,

    Récursivité ou pas, l'algo est toujours faux (tout comme le mien
    posté initialement)

    calc(150.35)

    résultat: [1, 1, 0, 0, 0, 0, 1, 0, 9, NaN]
    au lieu de [1, 1, 0, 0, 0, 0, 1, 1, 0]

Discussions similaires

  1. function javascript qui ne fonctionne pas dans la balise <body>
    Par typikal dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/04/2008, 16h45
  2. Appeller une function javascript de la page mère
    Par Anubis dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/07/2007, 15h22
  3. bean:define pour passage variable dans function javascript
    Par fbuchwalder dans le forum Struts 1
    Réponses: 2
    Dernier message: 06/11/2006, 18h36
  4. onclick+ function javascript=probleme
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/10/2006, 12h54
  5. [AJAX] Réponse XML - Functions Javascript
    Par ..:: Atchoum ::.. dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 24/01/2006, 03h02

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