Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de logique

algo

    1 avril 2011 à 21:02:27

    Bonjour,

    Je sèche sur un truc tout bête, un algo que je n'arrive pas à finaliser.

    Je vous explique d'abord en français ce que je souhaite obtenir :

    Citation


    J'ai un script qui va récupérer plusieurs éléments et les compter, je mets le résultat de la somme dans la variable compteur.

    Ensuite il faut que je fasse la différence entre le compteur précédent et le nouveau pour savoir si il y a autant d'éléments ou plus. La première opération est effectuée en boucle (toutes les 5 minutes) d'où le "précédent".

    Une fois que j'ai la différence (dans une variable), je l'affiche.

    Jusque ici OK, mais l'opération est réitérée à intervalles réguliers. Je veux que la différence s'incrémente au fur et à mesure.

    Exemple : au premier tour de boucle j'obtiens une différence de 5, je l'affiche. Au deuxième tour de boucle j'obtiens une différence de 7 (soit 2 de plus qu'avant), j'affiche 7. Etc.

    L'utilisateur, selon un événement peut remettre à 0 justement cette différence qui est affichée. Le problème est là, si au 2ème tour de boucle je n'ai pas mis à 0 la différence et qu'elle se remet toute seule, alors c'est pas bon.



    C'est compliqué à exprimer est-ce que quelqu'un a suivi ?

    Merci. :(
    • Partager sur Facebook
    • Partager sur Twitter
      2 avril 2011 à 9:46:36

      La partie que je crois avoir compris ne me paraît pas bien complexe...

      T'as une variable compteur et une variable prevCompteur initialisées à 0.

      Tu comptes les éléments, tu affiches compteur-prevCompteur. Tu fais prevCompteur = compteur. Et tu recommences 5 secondes après.

      C'est ça, déjà, ou je suis à côté de la plaque ?

      Peut-être que si tu expliquais plus précisément le but final, ça aiderait à la compréhension... :-°
      • Partager sur Facebook
      • Partager sur Twitter
        2 avril 2011 à 12:16:55

        Citation

        L'utilisateur, selon un événement peut remettre à 0 justement cette différence qui est affichée. Le problème est là, si au 2ème tour de boucle je n'ai pas mis à 0 la différence et qu'elle se remet toute seule, alors c'est pas bon.


        Pas trop compris :/
        • Partager sur Facebook
        • Partager sur Twitter
          2 avril 2011 à 12:35:44

          Citation : Golmote

          Tu comptes les éléments, tu affiches compteur-prevCompteur. Tu fais prevCompteur = compteur. Et tu recommences 5 secondes après.


          C'est bien là le problème. Au prochain tour de boucle comme je lui fais compteur = new_compteur (cf ligne 8) ben au prochain tour quand je vais faire la différence il me trouvera 0.

          C'est un système de notifications/alertes que l'utilisateur doit gérer.

          Partie du code qui nous intéresse :
          var compteur_old = parseInt(localStorage['compteur']);
          
          var new_compteur = parseInt(nbAchetes) + parseInt(nbVendus) + parseInt(nbMp); // je calcule le nb total
          var diff = new_compteur - compteur_old;
          
          // j'affiche diff
          
          localStorage['compteur'] = new_compteur;
          

          • Partager sur Facebook
          • Partager sur Twitter
            2 avril 2011 à 13:08:38

            Bah non parce qu'au prochain tour, tu recalculeras le nombre total... qui sera susceptible d'être différent du nombre du tour précédent, non ?
            • Partager sur Facebook
            • Partager sur Twitter
              2 avril 2011 à 13:44:17

              Oui mais, un exemple :

              1er tour :
              - compteur_old = 10
              - new_compteur = 12
              - diff m'affiche donc 2

              2ème tour :
              - compteur_old = 12
              - new_compteur = 12 (il a pas bougé, c'est celui qui est recalculé)
              - diff m'affiche donc 0 (or il doit m'afficher 2 car l'utilisateur n'a pas pris en compte [selon un clic] les 2 alertes)

              Tant que l'utilisateur n'a pas remis "diff" à 0 il doit s'incrémenter, c'est là où je pêche.

              C'est plus clair là ? :D
              • Partager sur Facebook
              • Partager sur Twitter
                2 avril 2011 à 13:46:51

                Ah ok. C'est plus clair. Donc il faut que ta variable diff soit en fait une somme.

                Dans ton code posté précédemment, ça revient à remplacer ta ligne 4 par :

                var diff += new_compteur - compteur_old;
                
                • Partager sur Facebook
                • Partager sur Twitter
                  2 avril 2011 à 14:15:17

                  Je pensais à un truc comme ça aussi.

                  Je teste ça et je vais voir le résultat que ça donne. Merci.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 avril 2011 à 12:51:05

                    Je reviens à la charge, une erreur que je comprends pas :

                    // fonction qui met à jour l'icône
                    function majIcone(pseudo, nbMp, nbAchetes, nbVendus) {
                    	// récupération des anciennes valeurs
                    	var compteur_old = parseInt(localStorage['compteur']);
                    	var diff = parseInt(localStorage['diff']);
                    	
                    	var new_compteur = parseInt(nbAchetes) + parseInt(nbVendus) + parseInt(nbMp);
                    	var diff += parseInt(new_compteur) - parseInt(compteur_old);
                    	
                    	if(diff != 0) {
                    		new_compteur = new_compteur.toString();
                    		diff = diff.toString();
                    		
                    		chrome.browserAction.setBadgeBackgroundColor({
                    			color: [208, 0, 24, 255]
                    		});
                    
                    		chrome.browserAction.setBadgeText({
                    			text: diff
                    		});
                    	} else {
                    		chrome.browserAction.setBadgeText({
                    			text: ''
                    		});
                    	}
                    	
                    	localStorage['pseudo'] = pseudo;
                    	localStorage['nbMp'] = nbMp;
                    	localStorage['nbAchetes'] = nbAchetes;
                    	localStorage['nbVendus'] = nbVendus;
                    	localStorage['compteur'] = new_compteur;
                    	localStorage['diff'] = diff;
                    }
                    

                    Uncaught SyntaxError: Unexpected token +=


                    Comment ça se fait ? o_O

                    EDIT : J'ai enlevé le var devant et ça a l'air de marcher !
                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 avril 2011 à 15:41:07

                      Tu peux faire utiliser var avec += parce que va déclare et += considère que c'est déjà déclaré.
                      Donc il faut que tu enlèves le var puisqu'il y est déjà ligne 5.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Problème de logique

                      × 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