Partage
  • Partager sur Facebook
  • Partager sur Twitter

afficher la valeur maximal d'un tableau

    30 juillet 2011 à 9:06:07

    Bonjour tout le monde!

    j'ai un petit problème:

    function valeur_max(tableau){
    var max =-Infinity;  // mon tableau contient des valeurs positives et négatives
    for (i=0;i<tableau.length;i++) if(tableau[i]>max) max=tableau[i];
      return max;
      }
    

    J’ai le fonction qui affiche ma plus grande valeur (max) sur mon tableau, mais mon problème c'est que je veut affiché la valeur maximale en absolu (sachant que j’ai des valeurs négatives et positives dans mon tableau).

    merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2011 à 10:08:51

      Bonjour.

      Pour se faire, tu peux convertir tous tes nombres négatifs en positifs, puis prendre la plus grande valeur :

      function valmax(tab)
      {
         var max = 0; // On a maintenant des valeurs positives.
         var val, i;
         for (i = 0 ; i < tab.length ; i++)
         {
            if (tab[i] < 0)
               val = tab[i]*(-1);
            else
               val = tab[i];
            if (max < val)
               max = val;
         }
         return max;
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        30 juillet 2011 à 22:16:59

        Bonjour,
        sinon tu peux utiliser la fonction Math.abs :
        ligne 3 :
        if(Math.abs(tableau[i])>max) max=Math.abs(tableau[i]);

        [Edit]
        je connaissais pas Infinity : j'utilise plutot un : max=Math.abs(tableau[0]) puis une boucle for commençant à partir de 1 (mais cela suppose des tableaux non nuls : /!\ risque de bug sinon)

        @stombaker : ton "val = tab[i]*(-1);" m'a fait sourire ;-)
        "val = -tab[i];" me parait plus naturel
        • Partager sur Facebook
        • Partager sur Twitter
          1 août 2011 à 23:33:53

          bonsoir tout le monde;
          merci pour votre réponse, j'ai essayé votre code mais il m'affiche rien!

          j’espère avoir une aidée sur qu'il me manque.
          merci d'avance.
          • Partager sur Facebook
          • Partager sur Twitter
            2 août 2011 à 12:20:24

            Il te manque l'appel à la fonction.
            Une fonction, de base, c'est un script qui attend qu'on l'appelle pour effectuer des traitements. Le code que stombaker t'a donné ne fait que définir la fonction. Autrement dit, c'est un script qui attend. A toi de l'appeler avec le/les bons paramètres ^^
            • Partager sur Facebook
            • Partager sur Twitter
            Directeur technique, créateur de jeux HTML5 et fan de JavaScript | La suite de OnHack est sur les rails !
              27 avril 2018 à 16:01:16

              comment on fait si on a besoin le 3 chiffre plus grand dans le table 

              par exemple: tableau[] = { 3,5,6,7,9,13}

                                 les trois chiffre c'est "13,9,7"

              • Partager sur Facebook
              • Partager sur Twitter
                28 avril 2018 à 0:57:52

                ZhouGoupil a écrit:

                comment on fait si on a besoin le 3 chiffre plus grand dans le table 

                par exemple: tableau[] = { 3,5,6,7,9,13}

                                   les trois chiffre c'est "13,9,7"


                En JS il faut plutôt écrire:

                tableau = [3,5,6,7,9,13];

                -
                Edité par dilatation 28 avril 2018 à 1:04:09

                • Partager sur Facebook
                • Partager sur Twitter
                  28 avril 2018 à 1:05:49


                  ZhouGoupil a écrit:

                  comment on fait si on a besoin le 3 chiffre plus grand dans le table 

                  par exemple: tableau[] = { 3,5,6,7,9,13}

                                     les trois chiffre c'est "13,9,7"



                  var recup_les_n_plus_grands = function (tableau, n) {
                  	var recup = tableau.slice(0, n);
                  	var ab_diff = function (a, b) {
                  		return b - a;
                  	};
                  	recup.sort(ab_diff);
                  	var n1 = n - 1;
                  	while (n < tableau.length) {
                  		if (tableau[n] > recup[n1]) {
                  			recup[n1] = tableau[n];
                  			recup.sort(ab_diff);
                  		}
                  		n++;
                  	}
                  	return recup;
                  };
                  
                  
                  recup_les_n_plus_grands([3,5,6,7,9,13], 0);
                  // []
                  
                  recup_les_n_plus_grands([3,5,6,7,9,13], 1);
                  // [13]
                  
                  recup_les_n_plus_grands([3,5,6,7,9,13], 3);
                  // [13, 9, 7]
                  
                  recup_les_n_plus_grands([3,5,6,7,9,13], 5);
                  // [13, 9, 7, 6, 5]
                  
                  recup_les_n_plus_grands([3,5,6,7,9,13], 15);
                  // [13, 9, 7, 6, 5, 3]

                  -
                  Edité par Aldebo 28 avril 2018 à 1:16:14

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 avril 2018 à 17:20:18

                    Je tiens à dire que javascript contient des fonctions pour ces manipulations. 

                    Les trois plus grands nombres d'un tableau ne contenant que des nombres.

                    let result = numbers.sort((prev, curr) => curr > prev).slice(0, 3);

                    Les cinq plus grands nombres d'un tableau ne contenant que des nombres.

                    let result = numbers.sort((prev, curr) => curr > prev).slice(0, 5);

                    Les 3 plus petits nombres d'un tableau ne contenant que des nombres.

                    let result = numbers.sort((prev, curr) => curr < prev).slice(0, 3);



                    • Partager sur Facebook
                    • Partager sur Twitter
                    Autodidacte, j'essaye d'apprendre le pourquoi du comment :)
                      28 avril 2018 à 18:31:52

                      Zirpoo a écrit:

                      Je tiens à dire que javascript contient des fonctions pour ces manipulations. 

                      Les trois plus grands nombres d'un tableau ne contenant que des nombres.

                      let result = numbers.sort((prev, curr) => curr > prev).slice(0, 3);

                      Les cinq plus grands nombres d'un tableau ne contenant que des nombres.

                      let result = numbers.sort((prev, curr) => curr > prev).slice(0, 5);

                      Les 3 plus petits nombres d'un tableau ne contenant que des nombres.

                      let result = numbers.sort((prev, curr) => curr < prev).slice(0, 3);



                      pourquoi as tu nommé les variables prev et curr ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 avril 2018 à 20:33:43

                        C'est vrai que prev et curr n'ont peut-être pas leur place, tu peux écrire a et b à la place.

                        prev est une abréviation de previous qui veux dire précédant en anglais.

                        curr est une abréviation de current qui veux dire actuel en anglais.

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Autodidacte, j'essaye d'apprendre le pourquoi du comment :)
                          12 avril 2021 à 23:46:06

                           Merci ;)

                          -
                          Edité par TioualMohamed 12 avril 2021 à 23:47:30

                          • Partager sur Facebook
                          • Partager sur Twitter

                          afficher la valeur maximal d'un tableau

                          × 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