File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/beta2N31-5-pMmFsPjh.js.map
{"version":3,"file":"beta2N31-5-pMmFsPjh.js","sources":["../../src/exercices/2e/beta2N31-5.js"],"sourcesContent":["import { combinaisonListes } from '../../lib/outils/arrayOutils'\nimport { egalOuApprox } from '../../lib/outils/ecritures'\nimport { arrondi } from '../../lib/outils/nombres'\nimport { decimalToScientifique, texNombre } from '../../lib/outils/texNombre'\nimport Exercice from '../Exercice'\nimport { calculANePlusJamaisUtiliser, listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { context } from '../../modules/context.js'\nimport { round } from 'mathjs'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\n\nexport const uuid = 'a1d0b'\nexport const titre = 'Calculer avec des nombres en notation scientifique'\nexport const interactifReady = true\nexport const interactifType = 'mathLive'\n// Les exports suivants sont optionnels mais au moins la date de publication semble essentielle\nexport const dateDePublication = '18/02/2022' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag\n// export const dateDeModifImportante = '24/10/2021' // Une date de modification importante au format 'jj/mm/aaaa' pour affichage temporaire d'un tag\n/**\n * Calculer avec des nombres en notation scientifique\n * @author Matthieu Devillers\n * 2N31-5\n */\nexport default class CalculerAvecEcritureScientifique extends Exercice {\n constructor () {\n super()\n this.titre = titre\n this.interactifReady = interactifReady\n this.interactifType = interactifType\n this.correctionDetailleeDisponible = true\n context.isHtml ? (this.spacingCorr = 3) : (this.spacingCorr = 2)\n if (!context.isHtml) {\n this.correctionDetaillee = false\n }\n this.consigne = 'Calculer, en détaillant les étapes, puis exprimer le résultat sous forme scientifique. <br>'\n this.consigne += 'En cas de besoin, on arrondira la mantisse au centième près.'\n this.nbCols = 2\n this.nbColsCorr = 2\n this.spacing = 1.5\n this.spacingCorr = 1.5\n this.nbQuestions = 3\n this.sup = 1\n this.besoinFormulaireNumerique = ['Niveau de difficulté', 4, '1 : Produit\\n 2 : Quotient\\n 3 : Quotient de produits\\n 4 : Mélange des cas précédents']\n }\n\n nouvelleVersion () {\n this.sup = parseInt(this.sup)\n this.listeQuestions = [] // Liste de questions\n this.listeCorrections = [] // Liste de questions corrigées\n let typesDeQuestionsDisponibles = []\n if (this.sup === 1) {\n typesDeQuestionsDisponibles = [1] // Produit\n } else if (this.sup === 2) {\n typesDeQuestionsDisponibles = [2] // Quotient\n } else if (this.sup === 3) {\n typesDeQuestionsDisponibles = [3] // Quotient de produits\n } else {\n typesDeQuestionsDisponibles = [1, 2, 3]\n } // Mélange des cas précédents\n const listeTypeDeQuestions = combinaisonListes(typesDeQuestionsDisponibles, this.nbQuestions)\n for (let i = 0, texte, texteCorr, reponse, somme, cpt = 0, a = [], b = [], c = [], prod = [], n, typesDeQuestions; i < this.nbQuestions && cpt < 50;) {\n typesDeQuestions = listeTypeDeQuestions[i]\n n = 0\n while (n < 4) {\n c[n] = randint(-30, 30, [-1, 0, 1]) // initialise les exposants entiers relatifs\n b[n] = randint(11, 99) / 10 // initialise les mantisses entières ou avec un chiffre des dixièmes non nul.\n a[n] = randint(1, 9) + randint(0, 9) / 10 + randint(1, 9) / 10 / 10 // initialise les mantises avec chiffre des centièmes non nul\n if (randint(1, 2) === 1) {\n [a[n], b[n]] = [b[n], a[n]]\n }\n // prod[n] ne contient pas le produit mais le tableau issu de decimalToScientifique.\n // ça évite de la rappeler à chaque fois qu'on a besoin de la mantisse ou de son exposant.\n prod[n] = decimalToScientifique(arrondi(a[n] * b[n], 3))\n n++\n }\n texte = ''\n switch (typesDeQuestions) {\n case 1:\n texte = `$ ${texNombre(a[0])} \\\\times 10^{${texNombre(c[0])}} \\\\times ${texNombre(b[0])} \\\\times 10^{${texNombre(c[1])}} $\\n` // a.10^n x b.10^m = ?\n somme = c[1] + c[0]\n if (this.correctionDetaillee) {\n texteCorr = `<br>$\\\\begin{aligned}${texNombre(a[0])} \\\\times 10^{${texNombre(c[0])}} \\\\times ${texNombre(b[0])} \\\\times 10^{${texNombre(c[1])}} &= \\\\left ( ${texNombre(a[0])} \\\\times ${texNombre(b[0])} \\\\right ) \\\\times \\\\left ( 10^{${texNombre(c[1])}} \\\\times 10^{${texNombre(c[0])}} \\\\right )\\\\\\\\\\n`\n texteCorr += `&= ${texNombre(a[0] * b[0], 3)} \\\\times 10^{${texNombre(somme)}}\\\\\\\\\\n`\n if (prod[0][1] !== 0) { // On ajoute ces lignes seulement si l'exposant du produit est différent de zéro\n texteCorr += `&= ${texNombre(prod[0][0])} \\\\times 10^{${prod[0][1]}} \\\\times 10^{${somme}}\\\\\\\\\\n`\n texteCorr += `&= ${texNombre(prod[0][0])} \\\\times 10^{${prod[0][1] + somme}}\\\\\\\\\\n`\n }\n // La ligne suivante est une concaténation conditionnelle : si il n'y a pas d'arrondi à faire on termine le calcul sinon on ajoute une ligne pour l'approximation\n texteCorr += egalOuApprox(prod[0][0], 2) === '=' ? '\\\\\\\\\\n\\\\end{aligned}$<br>' : `&\\\\approx ${texNombre(round(prod[0][0], 2))} \\\\times 10^{${prod[0][1] + somme}}\\\\\\\\\\n\\\\end{aligned}$<br>(avec la mantisse arrondie au centième) <br>`\n } else {\n texteCorr = `$ ${texNombre(a[0])} \\\\times 10^{${texNombre(c[0])}} \\\\times ${texNombre(b[0])} \\\\times 10^{${texNombre(c[1])}} ${egalOuApprox()} ${texNombre(round(decimalToScientifique(prod[0])[0], 2))} \\\\times 10^{${calculANePlusJamaisUtiliser(decimalToScientifique(prod[0])[1] + somme)}} $ (avec la mantisse arrondie au centième) <br>`\n }\n reponse = `${texNombre(prod[0][0], 2)}\\\\times 10^{${prod[0][1] + somme}}`\n\n break\n case 2:\n texte = `Texte2 ${a[0]}` // b>1\n if (this.correctionDetaillee) {\n texteCorr += 'Correction Détaillée 2'\n } else {\n texteCorr += 'CorrTest2'\n }\n reponse = 'Test 2'\n break\n case 3:\n texte = `Texte3 ${b[0]}` // b<-1\n if (this.correctionDetaillee) {\n texteCorr += 'Correction détaillée 3'\n } else {\n texteCorr = texte + 'CorrTest3'\n }\n reponse = 'test 3'\n break\n }\n texte += ajouteChampTexteMathLive(this, i)\n setReponse(this, i, reponse, { formatInteractif: 'ecritureScientifique' })\n // JC : setReponse(this, i, reponse, {formatInteractif: 'ecritureScientifique'})\n // JC : Si on ne précise pas le formatInteractif, alors par défaut, c'est 'calcul', et alors, réponse doit contenir un nombre, pas une chaine de caractère.\n if (this.questionJamaisPosee(i, reponse, somme, a, b, c, prod)) {\n // Si la question n'a jamais été posée, on en créé une autre\n this.listeQuestions.push(texte)\n this.listeCorrections.push(texteCorr)\n i++\n }\n cpt++\n }\n listeQuestionsToContenu(this)\n }\n}\n"],"names":["uuid","titre","interactifReady","interactifType","dateDePublication","CalculerAvecEcritureScientifique","Exercice","context","typesDeQuestionsDisponibles","listeTypeDeQuestions","combinaisonListes","i","texte","texteCorr","reponse","somme","cpt","a","b","c","prod","n","typesDeQuestions","randint","decimalToScientifique","arrondi","texNombre","egalOuApprox","round","calculANePlusJamaisUtiliser","ajouteChampTexteMathLive","setReponse","listeQuestionsToContenu"],"mappings":"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"}