exercices/5e/5N11-4.js

import Exercice from '../Exercice.js'
import { listeQuestionsToContenu, combinaisonListes, randint, calcul, texNombre, texPrix, arrondi } from '../../modules/outils.js'
import { setReponse } from '../../modules/gestionInteractif.js'
import { ajouteChampTexteMathLive } from '../../modules/interactif/questionMathLive.js'
export const titre = 'Exprimer une fraction sous la forme d\'une valeur approchée d\'un pourcentage'
export const interactifReady = true
export const interactifType = 'mathLive'

export const dateDeModifImportante = '17/03/2022'

/**
 * Déterminer une valeur approchée d'un pourcentage à l'aide de la calculatrice
 * @author Rémi Angot
 * Référence 5N11-4
 * 2021-02-06
 * Ajout de l'interactivité par Guillaume Valmont le 17/03/2022
*/
export const uuid = '6b534'
export const ref = '5N11-4'
export default function ValeurApprocheeDePourcentages () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.titre = titre
  this.consigne = "À l'aide de la calculatrice, donner une valeur approchée au centième près du quotient puis l'écrire sous la forme d'un pourcentage à l'unité près."
  this.nbQuestions = 6
  this.nbCols = 2 // Uniquement pour la sortie LaTeX
  this.nbColsCorr = 2 // Uniquement pour la sortie LaTeX
  this.sup = 1 // Niveau de difficulté
  this.tailleDiaporama = 3 // Pour les exercices chronométrés. 50 par défaut pour les exercices avec du texte
  this.video = '' // Id YouTube ou url

  this.nouvelleVersion = function () {
    this.listeQuestions = [] // Liste de questions
    this.listeCorrections = [] // Liste de questions corrigées
    this.autoCorrection = []

    const denominateurDisponibles = [100, 200, 300, 1000]
    const listeTypeDeQuestions = combinaisonListes(denominateurDisponibles, this.nbQuestions) // Tous les types de questions sont posés mais l'ordre diffère à chaque "cycle"
    if (this.sup === 2) {
      this.consigne = "À l'aide de la calculatrice, donner une valeur approchée au millième près du quotient puis l'écrire sous la forme d'un pourcentage au dixième près."
    }
    for (let i = 0, texte, texteCorr, num, den, cpt = 0; i < this.nbQuestions && cpt < 50;) {
      den = randint(10, listeTypeDeQuestions[i])
      num = randint(1, den - 8)
      while (calcul(num / den) === arrondi(num / den, 4)) {
        den = randint(10, listeTypeDeQuestions[i])
        num = randint(1, den - 8)
      }
      texte = `$\\dfrac{${num}}{${den}}\\approx \\ldots\\ldots\\ldots $ soit environ $\\ldots\\ldots\\ldots~\\%$`
      if (this.interactif) {
        texte += ajouteChampTexteMathLive(this, i, 'inline largeur25', { texteApres: '%' })
      }
      if (this.sup === 1) {
        texteCorr = `$\\dfrac{${num}}{${den}}\\approx ${texPrix(calcul(num / den, 2))} $ soit environ $${calcul(calcul(num / den, 2) * 100)}~\\%$ $\\left(\\text{car } ${texPrix(calcul(num / den, 2))}=\\dfrac{${calcul(calcul(num / den, 2) * 100)}}{100}\\right)$.`
        setReponse(this, i, calcul(calcul(num / den, 2) * 100))
      }
      if (this.sup === 2) {
        texteCorr = `$\\dfrac{${num}}{${den}}\\approx ${texNombre(calcul(num / den, 3))} $ soit environ $${texNombre(calcul(num / den * 100, 1))}~\\%$ $\\left(\\text{car } ${texNombre(calcul(num / den, 3))}=\\dfrac{${texNombre(calcul(num / den * 100, 1))}}{100}\\right)$.`
        setReponse(this, i, calcul(num / den * 100, 1))
      }

      if (this.listeQuestions.indexOf(texte) === -1) {
        // Si la question n'a jamais été posée, on en crée une autre
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
  }
  this.besoinFormulaireNumerique = ['Niveau de précision', 2, "1 : Donner un pourcentage à l'unité près\n2 : Donner un pourcentage au dixième près"]
}