travail à faire en javascript :s

Discussion dans 'Web, design' créé par Mouflette, 21 Novembre 2006.

Statut de la discussion:
Fermée.
  1. Offline
    Mouflette Elite
    Voilà j'ai un travail à faire en 2 scéances d informatique et qui me semble impossible à faire :-( je viens de passer + de 2h à me tirer les cheveux pour voir cmt le réaliser et ma feuille est toujours blanche...

    Je suis en 2eme BA d ingénieur industriel et j ai choisi l option construction donc l informatique de ce style ne va pas me servir à grand chose. Malgré ma bonne volonté je n arrive pas à voir comment il faudrait procéder pour réaliser ça, si qqun pourrait me dire en grande ligne cmt débuter ça serait gentil...tout en sachant que je n ai que les base du javascript (enfin normalement je sais tout sur ce qu'il faudrait utiliser :roll: ). Je ne demande pas qu'on bosse à ma place j'aimerais juste des explications et des orientations il faut que je comprenne ce que je suis censée faire pour le faire :)

    Voici l énoncer :


    Enoncé

    Votre programme doit aider la société Schtroumf pour la paye de son personnel (10 personnes max).
    Monsieur Schtroumf, le directeur, est de la vielle école et à chaque fin de mois, il tient à donner lui-même à chaque membre du personnel une enveloppe contenant le salaire de la personne en argent liquide.
    En fonction des salaires des différents membres du personnel, le directeur doit savoir combien de pièces et billets des différentes valeurs il doit aller chercher à la banque et comment les répartir dans les différentes enveloppes.
    Les salaires seront compris entre 500 et 5.000 ¤ et votre programme mémorisera dans des tableaux toutes les données et résultats nécessaire pour afficher ensuite données et résultats dans la page en cours.

    [IMG]

    Conseil :

    travailler en centimes d’euro permet d’utiliser des entiers et donc de faire des divisions entières (quotient entier) et calculer le reste de cette division ( 13 % 5 = 3 ).
    Pour transformer un réel en entier, vous pouvez utiliser la fonction Math.floor ( var monEntier =Math.floor (monReel) ; )
    Ou la fonction parseInt( ) si on part d’une chaîne de caractère.
    Pour faire un tableau à 2 dimensions, il suffit de faire un tableau dont chaque case est un tableau

    Exemple :
    var monTableau= new Array(new Array(11,22,33),new Array(111,222,333),new Array(1111,2222,3333));
    document.write(monTableau[3][1]) ; // affiche 1111



    Merci à ceux qui répondront...(j'espère qu'il y en aura quelques uns :p)
    Mouflette, 21 Novembre 2006
    #1
  2. Offline
    Froggy fake geek
    je suppose que créer ton tableau et mettre tes données dedans ne pose pas trop de problème donc je vais juste te dire comment faire pour trouver le nombre de pièces/billets que tu dois donner à chacun ;)

    il suffit de diviser le montant du salaire par les billets/pièces en commençant par le plus gros et de vérifier à chaque fois s'il y a un reste à cette division. Auquel cas tu divise le reste par le billet suivant dans la liste etc... jusqu'à ce que le reste soit égal à 0 :)

    ensuite tu parcours ton tableau "verticalement" (donc par colonne) pour savoir combien de billet il doit aller chercher à la banque.

    voilà ;)
    Froggy, 21 Novembre 2006
    #2
  3. Offline
    Bingo Beer Addict
    C'est quoi ton problème ? Décomposer une somme en un nombre de billets ?

    Si tu as le tableau qui va contenir le salaire décomposé de ton employé :
    monsalairedecompose = array(array(50000,0), array(20000,0), array(10000,0), ... , array(1,0))

    Tu prends ton salaire et tu le multiplies par 100 pour l'avoir en centime (salairecentimes = Math.floor(salaire *100))

    Tu fais une variable pour le salaire restant (salairerestant)

    Tu circules dans ton tableau, et à chaque valeur de billet tu sotckes le nombre de billet nécessaire (c'est le nombre entier de billets qui divise le salaire restant).
    Tu stockes le salaire restant pour la boucle suivante (c'est le modulo du salaire restant par la valeur du billet).

    for i = 0 jusqu'au bout {
    monsalairedecompose[1] = Math.floor(salairerestant / monsalairedecompose[0] );
    salairerestant = salairerestant % monsalairedecompose[0]
    }

    Enfin c'est l'idée, il faut mettre tout ça en javascript quoi ! [IMG]
    Bingo, 21 Novembre 2006
    #3
  4. Offline
    Maleki Pain in the ass !
    J'ai commencé un petit bout de code à ma manière en javascript pour te donner la marche à suivre :
    (Cela seulement pour le salaire d'une personne)
    Sur une page html, il y a 3 champs de type texte + un bouton.
    - Le premier, on y rentre le salaire et son ID est "Salaire".
    - Le second affichera le nombre de billets de 500 qu'il peut y avoir en fonction du salaire entré. ID = "Billet500"
    - Le troisième, même chose mais pour les billets de 200. ID = "Billet200".
    Le bouton possède un évenement Onclick.
    Code Javascript :
    Code:
    function CalculerSalaire()
    {
      var Total, Reste, NbBillet;
    
      //On stocke le salaire entré dans Total
      Total = document.getElementById('Salaire').value;
    
      //Dans Reste, on stocke le reste de la division entière 
      //Ex: 800 % 500 = 300  
      Reste = Total % 500;
    
      //On stocke dans NbBillet le nombre de billets de 500 qui y aura
      //Cela donne un nombre réel Ex: 700 / 500 = 1,4 donc 1 billet
      NbBillet = Total / 500;
     
      //On va donc arrondir au nombre entier inférieur Ex: 1,4 vaudra 1
      NbBillet = Math.floor(NbBillet); 
    
       //On affiche le résultat dans le 2ème champ
      document.getElementById('Billet500').value = NbBillet;
    
      //Maitenant on vérifie si il reste quelque chose après la division
      if(Reste > 0)
      {
        //Si oui, on stocke dans NbBillet le nbre de billets de 200 qui y a dans Reste
        NbBillet = Reste / 200;
    
        //Et on l'arrondit une nouvelle fois
        NbBillet = Math.floor(NbBillet); 
    
        Reste = Reste % 200;
    
        document.getElementById('Billet200').value = NbBillet;
        
       //Faire la suite avec les autres billets...
      }
      else
        //Si il n'y a aucun reste, on affiche 0
        document.getElementById('b200').value = 0;
     }
    
    Il faudra ensuite modifier pour stocker tout ca dans un tableau, calculer pour les autres salariés, les totaux, ... ect

    Maintenant, il doit surement avoir plus simple mais j'espère quand même que cela pourra t'aider pour la suite... ;)
    Maleki, 21 Novembre 2006
    #4
  5. Offline
    Mouflette Elite
    Merci bcp namo j arrive a comprendre mtn +/- la methode a appliquer :d

    c est qu'on a appris les base du javascript en cours par "correspondance" (sur le net quoi) donc j'ai surement tout vu mais bon rassembler tt ce que j ai appris pr faire ca je ne voyais pas quoi faire :-s

    mtn c est deja plus clair merci ;)
    Mouflette, 21 Novembre 2006
    #5
  6. Offline
    - Lo0 Elite
    Mmmmmm


    Moi j'aurais dis simplement d'utiliser les divisions entiere.

    nombre de billet de 500 = salaire / 500
    nombre de billet de 200 = ( salaire - nombre de billet de 500 * 500 ) / 200
    ...

    non ?
    - Lo0, 21 Novembre 2006
    #6
  7. Offline
    Froggy fake geek

    c'est ce que je dis à la première réponse ;)
    Froggy, 22 Novembre 2006
    #7
  8. Offline
    Mouflette Elite
    je verrai...bcp d eleve trouve le delais trop court et on bcp de questions vis a vis de cmt realiser ce truc inutile et chiant :d dc je vais me renseigner autour de moi pr voir cmt ils vont faire et si ca va pas aller questionner les profs...
    merci a tous d avoir repondu :)
    Mouflette, 22 Novembre 2006
    #8
  9. Offline
    Mouflette Elite
    J ai encore un petit probleme...que veux dire => isNaN(salaire) ???

    je ne pense pas avoir vu ca et si oui j ai oublié la signification de isNaN()... et qu est ce que ce s entre crochet??? important???

    si qqun pouvais m expliquer ca en qqs mots ca serait gentil :)
    Mouflette, 26 Novembre 2006
    #9
  10. Offline
    Ahava Revenant
    Cette fonction évalue un argument pour déterminer s'il ne s'agit pas d'un nombre (NaN : Not a Number).

    salaire[] est un tableau d'entiers (représentant des salaires), et salaire est le salaire dans le tableau à la position s


    :)
    Ahava, 26 Novembre 2006
    #10
  11. Offline
    guslinux Gamerz'ien
    quand tu fais l'acquisition des nombres présents dans le formulaire, tu dois faire un casting => parseInt() ou parseFloat()

    Sans ca JS voit les données comme une une de caractères ...
    guslinux, 28 Novembre 2006
    #11
  12. Offline
    Mouflette Elite


    merci :)
    Mouflette, 28 Novembre 2006
    #12
  13. Offline
    Mouflette Elite
    j ai denouveau un petit soucis ds le tableau final cmt puis je mettre una variable en couleur??? je n y arrive pas mon programme plante :s enfin ce n est qu un petit detail mais si qqun c est m aider ca serait chouette :)

    exemple :

    Code:
    for (i = 0 ; i < 15 ; i = i + 1){
    document.write("<td>");
    document.write(nombre[i][j]);
    document.write("</td>");
    mettre la variable "nombre [j]" en couleur en gros si on regarde l image du 1er post ca devrait etre en vert :)
    Mouflette, 11 Décembre 2006
    #13
  14. Offline
    Ahava Revenant
    tu peux mettre un <font color=green> puis </font>, chui plus sur du format de la balise mais c'est celle là pour mettre en couleur :)


    Donc si c'est juste ce que je dis, t'aura un truc du genre :


    Code:
    for (i = 0 ; i < 15 ; i = i + 1){
    document.write("<td><font color=green>");
    document.write(nombre[i][j]);
    document.write("</font></td>");

    pas certain mais c'est cette voie là que tu dois suivre :)
    Ahava, 11 Décembre 2006
    #14
  15. Offline
    Mouflette Elite
    J ai deja essayé ca (et encore une fois mtn) mais ca ne fonctionne pas :) mon programme ne veut meme plus commencer :d

    comme c est en javascript (tjs ds la balise script et pas body) je me dis qu'il y a p-e autre chose...meme le .fontcolor() fonctionne pas :s je ne sais plus quoi utiliser
    Mouflette, 11 Décembre 2006
    #15
  16. Offline
    Calvin80 Elite
    Code:
    
    for (i = 0 ; i < 15 ; i = i + 1){
    document.write('<td style="background-color: green;">');
    document.write(nombre[i][j]);
    document.write("</td>");
    
    si ca ne marche pas, c'est que ton erreur est comme la Vérité... elle est ailleurs.
    Calvin80, 12 Décembre 2006
    #16
Statut de la discussion:
Fermée.