Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Problème] Calcul de Change

    23 mai 2017 à 17:15:45

    Bonjour,

    Désolé de vous importuner encore ^^

    Mais je suis passer à un autre exercice donc voici l'intitulé : "Ce programme devra calculer la manière de donner une somme d’argent en un minimum de billets. La somme d’argent devra être demandée à l'utilisateur via la fonction prompt.  Le résultat devra être affiché directement dans la page grâce à la fonction document.write sous la forme suivante: 500 * X 200 * X 100 * X 50 * X 20 * X 10 * X 5 * X Où X devra être remplacé pour chaque type de billet par le nombre de billets nécessaires pour arriver à la somme rentrée par l’utilisateur. Attention, il faut afficher toutes les lignes même si la valeur de X est de 0 pour cette ligne.   

    S’il est impossible de donner la somme demandée uniquement avec des billets, alors afficher le message “impossible de calculer le rendu pour X ” où X est la valeur entrée par l’utilisateur"

    Selon moi,c'est assez proche de mon précédent programme (getDivisors) : 

    Je cherche depuis un moment un raisonnement et je ne trouve rien de concluant mais j'ai trouvé ceci sur Internet : 

    Est-ce que cela correspond avec ce qui est demander?

    Car j'essaie depuis un bon moment de tout faire correspondre et j'ai l'impression de tourner en rond :(

    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2017 à 18:03:56

      Bonjour,

      Pourquoi ne pas faire une fonction récursive ? 

      Voilà un exemple qui marche, j'arrive à trouver les billets qu'il faut. 

      Je passe la valeur voulu en paramètre (253euros), j'ai un tableau de billet, et je regarde la valeur la plus proche en dessous. résultat obtenu :

      200 - 50 - 2 - 1 

      <?php
      function closerVal ($iCheck) { 
          $Tab = array(500,200,100,50,20,10,5,2,1);
          sort($Tab, SORT_NUMERIC); 
          foreach ($Tab as $iClef => $iVal) { 
              if ($iVal > $iCheck) { 
                  if (isset ($Tab[$iClef - 1]) && $Tab[$iClef - 1] <= $iCheck) { 
                      echo $Tab[$iClef - 1].' - ';
                      $nb = $iCheck - $Tab[$iClef - 1];
                      if($nb != 0){
                          closerVal($nb);
                      }
                  } else { 
                      $iVal; 
                  } 
              } 
          }
      } 
      
      $a = 253; 
      closerVal($a); 
      ?>

      Il y a sûrement 2-3 trucs à modifier, mais c'est un début pour réfléchir. ( j'avais oublié pour la section java ^^'!)

      -
      Edité par yoan.tls 23 mai 2017 à 18:04:57

      • Partager sur Facebook
      • Partager sur Twitter
        23 mai 2017 à 23:00:34

        Je suis un débutant en JavaScript donc j'ai un peu de mal avec ce que vous m'avez montrer ^^

        Mais j'essaie de comprendre au maximum,mais j'ai quelques questions :

        Les $,ils servent vraiment à quelque chose?

        Votre $iCheck,c'est équivalent à mon arg,nan?

        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2017 à 9:37:53

          Bonjour,

          Je viens de le traduire en JS :

          https://codepen.io/anon/pen/jmdzrp

          variable c'est votre arg, il s'agit de la somme sur laquelle il faut rendre la monnaie.

          J'ai donc un tableau de billet et de piece (banque), et je cherche dans ce tableau le billet qui ce rapproche le plus de notre somme sans la dépasser, ensuite je passe stop à true (quand on a trouver, plus de raison de continuer à chercher), j'appel ensuite cette même fonction pour la somme - billet, et ansi de suite. Tu as donc une fonction récursive.

          Si tu as d'autre question.

          • Partager sur Facebook
          • Partager sur Twitter
            24 mai 2017 à 16:13:33

            Merci pour la traduction,c'est vraiment utile!!!

            J'en suis à ça :

             

            J'ai compris la plupart du script mais lorsque j'entre une valeur,cela n'affiche pas après le "Votre monnaie :"

            Je pense que c'est à cause du document.write,nan?

            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2017 à 16:40:44

              Non, je pense qu'il s'agit juste d'un souci de librairie, tu ne dois pas avoir importé JQuery, il faut supprimer ma ligne JQuery ($('div p')...) et la remplacer par du javascript (document.write).

              -
              Edité par yoan.tls 24 mai 2017 à 16:41:02

              • Partager sur Facebook
              • Partager sur Twitter
                24 mai 2017 à 17:48:35

                Cela ne fonctionne toujours pas :/

                J'ai dût mal faire quelque chose

                • Partager sur Facebook
                • Partager sur Twitter
                  24 mai 2017 à 18:04:33

                  getElementById('div p') <-- Tu selectionnes une balise avec tel id, alors que dans cette div, il n'y a aucun id, forcément cela ne va pas marcher. 

                  Voilà comment il faut faire en JS pure :

                  https://codepen.io/anon/pen/jmdzrp

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 mai 2017 à 18:30:40

                    Ah! Oui,pourtant,au départ,je l'avais,j'ai dût la supprimer sans la remettre ^^

                    Mais je ne comprends pas une ligne,celle-ci : document.getElementById('test').innerHTML = document.getElementById('test').innerHTML + banque[(i)]+' ';

                    C'est pour créer la liste?

                    Après,sur votre dernière exemple,vous supprimez le stop = true; mis initialement,est-ce normal?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 mai 2017 à 1:26:26

                      non, il s'agit d'une concaténation de text courant. La 1er fois que l'on passe dans la boucle par exemple, tu as document.getElementById('test').innetHTML qui vaut Votre monnaie : que l'on concataine avec banque[i], ainsi de suite.

                      Il faudrait peut être revoir les bases du Javascript quand même :)

                      Pour ce qui est de la dernière question, je n'ai pas compris celle ci.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 mai 2017 à 3:49:01

                        Oui,j'ai du mal avec JavaScript et la programmation en général mais j'essaie de m'améliorer :/

                        Sinon,ça fonctionne toujours pas,comprends pas

                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 mai 2017 à 3:49:48

                          La fonction s'appelle calcule et toi tu appelles la fonction divis()... Relis bien ton code. 

                          Il manque un point virgule à la ligne 26.

                          • Partager sur Facebook
                          • Partager sur Twitter

                          [Problème] Calcul de Change

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown