Ou placer ma balise parseInt [Résolu]

Messages postés
13
Date d'inscription
dimanche 27 octobre 2019
Statut
Membre
Dernière intervention
2 novembre 2019
-
slt, j'ai besoin d'aide car je ne trouve pas ou placer ma balise parseInt dans mon code javascript
voici mo code :
function resoudre()
{
var monSuperCalcul = document.getElementById("case1").value+document.getElementById("case2").value+document.getElementById("case3").value+document.getElementById("case4").value+document.getElementById("case5").value+document.getElementById("case6").value+document.getElementById("case7").value+document.getElementById("case8").value+document.getElementById("case9").value+document.getElementById("case10").value+document.getElementById("case11").value+document.getElementById("case12").value+document.getElementById("case13").value+document.getElementById("case14").value+document.getElementById("case15").value+document.getElementById("case16").value+document.getElementById("case17").value+document.getElementById("case18").value+document.getElementById("case19").value+document.getElementById("case20").value+document.getElementById("case21").value+document.getElementById("case22").value+document.getElementById("case23").value+document.getElementById("case24").value+document.getElementById("case25").value+document.getElementById("case26").value+document.getElementById("case27").value+document.getElementById("case28").value+document.getElementById("case29").value+document.getElementById("case30").value+document.getElementById("case31").value+document.getElementById("case32").value+document.getElementById("case33").value+document.getElementById("case34").value+document.getElementById("case35").value/document.getElementById("case36");
document.getElementById("case37").value=monSuperCalcul;
}
Afficher la suite 

1 réponse

Messages postés
3503
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
12 novembre 2019
917
0
Merci
Bonjour,

J'aurais plusieurs remarques.
1 - Tu devrais regarder le fonctionnement des boucles : avec un for (var i = 1; i < 36; i++) tu peux largement simplifier ton code.
2 - parseInt n'est pas une balise, mais une fonction.
3 - parseInt prend en entrée une chaîne de caractère (ce qui est probablement la nature de chacune des valeurs de tes cases) et ressort un entier. Or tes calculs se basent sur des entiers. Ce sont donc chacun de tes termes de l'addition qui doivent être transformés en entiers
4 - Attention à la priorité des opérateurs : A+B+C/3 n'est pas la même chose que (A+B+C)/3. Et je pense que c'est cette dernière opération que tu veux réellement faire.

En bref, je te propose ce code :
function resoudre()
{
    var resultat = 0;
    for (var i = 1; i < 36; i++)
    {
        var case = "case" + i;
        resultat += parseInt(document.getElementById(case).value);
    }
    document.getElementById("case37").value = resultat / parseInt(document.getElementById("case36").value);
}


Xavier
Reivax962
Messages postés
3503
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
12 novembre 2019
917 -
Ok.
Du coup il suffit de vérifier que le champ est bien rempli avant de faire la somme.
On peut aussi se passer du champ 36, du coup.
Ce qui donne :
function resoudre()
{
    var resultat = 0;
    var nombreValeurs = 0;
    for (var i = 1; i < 36; i++)
    {
        var nom = "case" + i;
        var valeur = document.getElementById(nom).value;
        if (valeur.trim() != "")
        {
             resultat += parseInt(valeur);
             nombreValeurs++;
        }
    }
    document.getElementById("case37").value = resultat / nombreValeurs;
}

Xavier
VazyoO_
Messages postés
13
Date d'inscription
dimanche 27 octobre 2019
Statut
Membre
Dernière intervention
2 novembre 2019
-
Super, merci ça marche, et une autre petite question est-ce possible de faire un classement des notes rentrer par l'utilisateur de la meilleur à la moins bonne des notes ?
Reivax962
Messages postés
3503
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
12 novembre 2019
917 -
Bonjour,

Oui c'est bien sûr possible.
Pour ça, tu peux utiliser la méthode Array.sort() (https://www.w3schools.com/jsref/jsref_sort.asp) qui permet de trier les éléments d'un tableau. Il faut donc commencer par mettre toutes les notes dans un tableau (avec une boucle, comme dans le code déjà donné), puis les trier en appelant sort(), puis les réafficher (à nouveau par une boucle).

Xavier
VazyoO_
Messages postés
13
Date d'inscription
dimanche 27 octobre 2019
Statut
Membre
Dernière intervention
2 novembre 2019
-
Ok, je vois ce qu'il faut faire mais je ne sais pas comment y arriver
var points = [...............];
points.sort(function(a, b){return a-b});
dans les points par exemple je ne sais pas ce qu'il faut que je mette
Reivax962
Messages postés
3503
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
12 novembre 2019
917 -
Bonjour,

Il ne faut pas initialiser le tableau en une fois. Il faut rajouter les notes une à une en faisant une boucle comme déjà écrite (ou en la réutilisant directement).

Xavier
Commenter la réponse de Reivax962