exercices/4e/4C32-0.js

import Exercice from '../Exercice.js'
import { listeQuestionsToContenu, combinaisonListes, randint, choice, texNombre } from '../../modules/outils.js'
import { setReponse } from '../../modules/gestionInteractif.js'
import { ajouteChampTexteMathLive } from '../../modules/interactif/questionMathLive.js'
import Decimal from 'decimal.js'
export const interactifReady = true
export const interactifType = 'mathLive'
export const titre = 'Écriture décimale d\'un calcul avec des puissances de 10'
export const dateDePublication = '18/01/2022'

/**
 * On donne un calcul avec des puissances de 10 et on en attend le résultat en écriture décimale
 * @author Mireille Gain
 * 4C32-0
*/
export const uuid = '5d72b'
export const ref = '4C32-0'
export default function EcritureDecimaleApresPuissancesDeDix () {
  Exercice.call(this)
  this.consigne = 'Donner le résultat des calculs suivants en écriture décimale.'
  this.nbQuestions = 4
  this.nbCols = 2
  this.nbColsCorr = 2
  this.tailleDiaporama = 3
  this.video = ''
  this.nouvelleVersion = function (numeroExercice) {
    this.listeQuestions = []
    this.listeCorrections = []
    this.autoCorrection = []

    const typeQuestionsDisponibles = ['type1', 'type2', 'type3', 'type4']

    const listeTypeQuestions = combinaisonListes(typeQuestionsDisponibles, this.nbQuestions)
    for (let i = 0, n, nb, d, p, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {
      texte = ''
      texteCorr = ''
      switch (listeTypeQuestions[i]) {
        case 'type1':
          n = new Decimal(choice([randint(2, 9), randint(11, 99), randint(101, 999)]))
          p = randint(0, 7)
          texte = `$${texNombre(n)} \\times 10^{${p}}$`
          texteCorr = texte
          texteCorr += `$=${texNombre(n.mul(Decimal.pow(10, p)))}$`
          setReponse(this, i, n.mul(Decimal.pow(10, p)))
          break
        case 'type2':
          n = new Decimal(choice([randint(2, 9), randint(11, 99), randint(101, 999)]))
          p = randint(1, 7)
          texte = `$${texNombre(n)} \\times 10^{${-p}}$`
          texteCorr = texte
          texteCorr += `$=${texNombre(n.mul(Decimal.pow(10, -p)), 10)}$`
          setReponse(this, i, n.mul(Decimal.pow(10, -p)))
          break
        case 'type3':
          n = choice([randint(2, 9), randint(11, 99), randint(101, 999)])
          d = choice([randint(2, 9), randint(11, 99), randint(101, 999)])
          p = randint(1, 7)
          nb = (new Decimal(d)).div(choice([10, 100, 1000])).add(n) // nb est Decimal !
          texte = `$${texNombre(nb, 3)} \\times 10^{${p}}$`
          texteCorr = texte
          texteCorr += `$=${texNombre(nb.mul(Decimal.pow(10, p)), 0)}$`
          setReponse(this, i, nb.mul(Decimal.pow(10, p)))
          break
        case 'type4':
          n = choice([randint(2, 9), randint(11, 99), randint(101, 999)])
          d = choice([randint(2, 9), randint(11, 99), randint(101, 999)])
          p = randint(0, 7)
          nb = (new Decimal(d)).div(choice([10, 100, 1000])).add(n)
          texte = `$${texNombre(nb, 3)} \\times 10^{${-p}}$`
          texteCorr = texte
          texteCorr += `$=${texNombre(nb.mul(Decimal.pow(10, -p)), 10)}$`
          setReponse(this, i, nb.mul(Decimal.pow(10, -p)))
          break
      }

      if (this.interactif) {
        texte += ajouteChampTexteMathLive(this, i)
      }

      if (this.questionJamaisPosee(i, texte)) {
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
  }
}