Une calculatrice

0/5 (9 avis)

Vue 7 253 fois - Téléchargée 535 fois

Description

Une caculatrice: Il en existe plus d'une dizaine sur ce site, celle-ci n'est donc qu'une variante. son intérêt réside dans sa fonction unique et très compacte d'intégration des fonctions de calcul fournies par javascript. (Tester avec IE et Opéra)

Source / Exemple :


function operer(signe, rang) {
    if (signe == 'CE' || signe == 'C') {
        memoire1 = "";
        memoire2 = "";
        form12.text2.value = "";
        form12.text1.value = form12.text1.value + '\r';
        vide = true;
        decimale = false;
    }
    else {
        var fonction = new Array(Math.round(form12.text2.value), Math.exp(form12.text2.value), Math.log(form12.text2.value), Math.sqrt(form12.text2.value), Math.tan(form12.text2.value), Math.cos(form12.text2.value), Math.sin(form12.text2.value), eval(form12.text2.value / 100), eval(1 / form12.text2.value), eval(0.017453292519 * form12.text2.value), eval(-1 * form12.text2.value), eval(form12.text2.value * form12.text2.value), Math.ceil(form12.text2.value));
        var texte = new Array(' Arrondi=', ' Exponentielle=', ' Logatithme=', ' Racine carré=', ' Tangente=', ' Cosinus=', ' Sinus=', '%=', ' Inverse=', ' En radian=', ' Opposé=', '²=', ' < ');
        if (form12.text2.value == '') { form12.text2.value = "0"; form12.text1.value += "0"; }
        if (rang < fonction.length) {
            form12.text2.value = fonction[rang];
            form12.text1.value += texte[rang];
            if (form12.text2.value == 'NaN' || form12.text2.value.indexOf('Infinity') != '-1') { decimale = false; vide = true; form12.text1.value += "Opération impossible "; form12.text2.value = ""; memoire2 = ""; memoire3 = ""; }
            if (form12.text2.value != '') form12.text1.value += Math.round(eval(form12.text2.value * 1000000000)) / 1000000000;
        }
        if (form12.text2.value.indexOf('.') != '-1') decimale = true;
        if (memoire2 != '') {
            form12.text2.value = Math.round(Math.pow(eval(memoire2), form12.text2.value) * 1000000000) / 1000000000;
            memoire2 = "";
            if (signe != '=') form12.text1.value += "=" + form12.text2.value;
        }
        if (signe != '' && signe != '=') {
             vide = true;
             decimale = false;
             if (signe == 'xy') {
                 memoire2 = form12.text2.value;
                 form12.text1.value += " Puissance"
                 form12.text2.value = "";
             }
             else {
                 memoire1 += form12.text2.value + signe;
                 form12.text1.value += signe;
                 form12.text2.value = "";
             }
         }
         if (signe == '=') {
             memoire1 += form12.text2.value;
             form12.text2.value = eval(memoire1);
             memoire1 = "";
             if (form12.text2.value == 'NaN' || form12.text2.value == 'Infinity') { form12.text1.innerText += "=Opération impossible"; form12.text2.value = ""; }
             else form12.text1.value += "=" + (Math.round(form12.text2.value * 1000000000)) / 1000000000;
         }
    }
    if (signe == 'C') form12.reset();
}

Conclusion :


Un exemple dans le zip.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009
28 mars 2009 à 06:50
Au fait ce serait sympa de proposer au moins un code source avent de réclamer!
Mais bon, pour t'encourager, cherche un peu, ce n'est pas compliqué. Je peux te dire que j'ai essayée la fonction avec firefox et que cela marche si tu suis les indications que je t'ai données.
cs_Phoenix35 Messages postés 12 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 27 mars 2009
27 mars 2009 à 18:40
J'ai mis innerHTML, j'ai mis innerText, j'ai mis value, ça me renvoie toujours NaN…
cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009
27 mars 2009 à 08:03
Je te répète que ça marche si tu suis les indications que je t'ai données.
Je laisse le script tel quel.
cs_Phoenix35 Messages postés 12 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 27 mars 2009
26 mars 2009 à 20:25
Revois et corrige toute ta fonction, je téléchargerai le script corrigé :p
cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009
26 mars 2009 à 07:11
Autant pour moi, ce n'est pas innerText mais value qui convient.
Cela devrait marcher!
Sinon je ne vois pas.
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.