Donnez vie à vos documents numériques !
 

Répondre à : Réduction fraction

abracadabraPDF Forums PDF – Général Réduction fraction Répondre à : Réduction fraction

#69378
bebarth
Maître des clés

bonjour,
Voici le premier script commenté où tu avais déjà compris certaines choses :

Code:
// Déclaration de la fonction « simplify » avec l’argumet « str »
function simplify(str) {
    // Déclaration de la variable « result » vide
    var result= » »;
    // On découpe la chaine de caractères « str » à chaque « / » pour en faire une table
    // Ici, comme il n’y a qu’un « / » la table comporte 2 éléments (avant et après le « / »)
    var data=str.split(« / »);
    // La variable « numOne » est le premier élément de la table « data » (basé sur 0)
    var numOne=Number(data[0]);
    // La variable « numTwo » est le deuxième élément de la table « data » (basé sur 0)
    var numTwo=Number(data[1]);
    // Boucle à partir de la valeur maxi entre numOne et numTwo jusqu’à 1 avec incrément de -1
    for (var i=Math.max(numOne,numTwo); i>1; i–) {
        // Si le reste de la division numOne÷i ET le reste de la division numTwo÷i sont égal à 0
        // i est un diviseur commun des 2 nombres
        if (numOne%i==0 && numTwo%i==0) {
            // donc on divise numOne par i (-> nouveau nombre numOne pour la boucle)
            numOne/=i;
            // et on divise numTwo par i (-> nouveau nombre numTwo pour la boucle)
            numTwo/=i;
        }
    }
    // Si numTwo = 1 (dénominateur ou diviseur = 1) result = numOne (numérateur ou dividende)
    if (numTwo===1) result=numOne.toString();
    // Sinon return = chaine de caractères numOne+ »/ »+numTwo
    else result=numOne.toString()+ »/ »+numTwo.toString();
    // Renvoi de la variable « result »
    return result;
}
// Et on applique la fonction à la chaine de caractères « 4/6 »
this.getField(« Text1 »).value=simplify(« 4/6 »);
// Puis à la chaine de caractères « 84810/985612 »
this.getField(« Text2 »).value=simplify(« 84810/985612 »);

On peut aussi définir une fonction avec plusieurs arguments :

Code:
// Fonction avec 2 arguments à placer en script de document
function simplify(numerateur,denominateur) {
    for (var i=Math.max(numerateur,denominateur); i>1; i–) {
        if (numerateur%i==0 && denominateur%i==0) {
            numerateur/=i;
            denominateur/=i;
        }
    }
    if (denominateur===1) result=numerateur.toString();
    else result=numerateur.toString()+ »/ »+denominateur.toString();
    return result;
}

// Et tu appelles la fonction en script de calcul du champ « Text1 »
event.value=simplify(this.getField(nombre1).value,this.getField(nombre1).value);

Je te re-laisse étudier ça et je reviens plus tard.
N’hésite pas à demander si tu ne comprends pas.

@Rakesh Kumar: Do you want a translation of my comments? let me know.

@+
:bonjour: