abracadabraPDF › Forums › PDF – Général › Réduction fraction › Répondre à : Réduction fraction
23 juin 2021 à 07:22
#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”);
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;
}
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: