exercices/can/6e/can6C27.js

import Exercice from '../../Exercice.js'
import Decimal from 'decimal.js'
import { randint, choice, texNombre, prenomF, texPrix } from '../../../modules/outils.js'
export const titre = 'Résoudre un problème de rendu de monnaie'
export const interactifReady = true
export const interactifType = 'mathLive'
export const dateDeModifImportante = '22/08/2022'
/**
 * Modèle d'exercice très simple pour la course aux nombres
 * @author Gilles Mora & Jean-Claude Lhote
 *
 * Date de publication 21/10/2021
*/
export const uuid = '02170'
export const ref = 'can6C27'
export default function RenduMonnaie () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.typeExercice = 'simple' // Cette ligne est très importante pour faire faire un exercice simple !
  this.nbQuestions = 1
  this.tailleDiaporama = 2
  // Dans un exercice simple, ne pas mettre de this.listeQuestions = [] ni de this.consigne
  this.formatChampTexte = 'largeur15 inline'
  this.nouvelleVersion = function () {
    const listeviennoiserie = [
      ['pains au chocolat', ' un pain au chocolat'],
      ['chocolatines', 'une chocolatine'], ['pains aux raisins', 'un pain aux raisins'], ['cookies', 'un cookie'], ['brioches', 'une brioche']]
    let a, b, e, prenom1, v, p, pu, t, reponse, nbre

    switch (choice([1, 2, 3, 4])) {
      case 1:
        a = randint(1, 3) * 10
        e = randint(1, 4)
        b = a + 2 * e
        this.reponse = 50 - a
        this.question = `Un livre coûte $${texPrix(b)}$ €. Je donne un billet de $50$  € et $${e}$ ${e > 1 ? 'pièces' : 'pièce'} de $2$  €. <br>

        Combien me rend-on ?`
        this.correction = `On doit me rendre $${50 + 2 * e}-${b}=${this.reponse}$ €.`
        if (this.interactif) { this.optionsChampTexte = { texteApres: ' €' } }
        this.canEnonce = this.question
        this.canReponseACompleter = '$\\dots$ €'
        break

      case 2:
        a = randint(1, 6) + (randint(1, 9)) / 10
        this.reponse = 10 - a
        this.question = `Chez le boulanger, je dois payer  $${texPrix(a)}$ €. <br>
        Je donne un billet de $10$  €. <br>

Combien me rend-on ?`
        this.correction = `On doit me rendre $10-${texNombre(a)}=${texNombre(10 - a)}$ €.`
        if (this.interactif) { this.optionsChampTexte = { texteApres: ' €' } }
        this.canEnonce = this.question
        this.canReponseACompleter = '$\\dots$ €'
        break

      case 3:
        a = randint(2, 6)
        v = choice(listeviennoiserie)
        p = v[0]
        t = choice([10, 20])
        prenom1 = prenomF()
        pu = new Decimal(choice([9, 11, 12, 13, 14, 15, 16])).div(10)
        reponse = new Decimal(pu).mul(a).mul(-1).add(t)
        this.question = `À la boulangerie, ${prenom1} achète $${a}$ ${p} à $${texPrix(pu)}$ € l'unité.<br>
   Elle paie avec un billet de $${t}$ €.<br>

   Combien doit-on lui rendre ?`

        this.correction = `${prenom1} achète $${a}$ ${p} à $${texPrix(pu)}$ € l'unité.<br>
  Le coût est donc $${a}\\times ${texPrix(pu)} =${texPrix(a * pu)}$ €.<br>
  On doit lui rendre : $${t}-${texPrix(a * pu)}=${texPrix(reponse)}$ €.
 `
        this.reponse = reponse
        if (this.interactif) { this.optionsChampTexte = { texteApres: ' €' } }
        this.canEnonce = this.question
        this.canReponseACompleter = '$\\dots$ €'
        break

      case 4:
        a = randint(5, 9)
        nbre = randint(3, 6)
        prenom1 = prenomF()
        this.reponse = nbre
        if (a * nbre < 35) {
          this.question = `${prenom1} a acheté des mangas coûtant $${a}$ € chacun. Elle a donné $40$ € au vendeur
            qui lui a rendu $${40 - a * nbre}$ €.<br>

            Combien de mangas ${prenom1} a-t-elle achetés ?  `

          this.correction = `On lui a rendu $${40 - a * nbre}$ €, donc les mangas ont coûté $(40-${40 - a * nbre})$ €,  soit $${a * nbre}$ €.<br>
         Le prix d'un manga est  $${a}$ €, donc  le nombre de  mangas est  donné par $${a * nbre}\\div ${a}=${nbre}$.`
        } else {
          this.question = `${prenom1} a acheté des mangas coûtant $${a}$ € chacun. Elle a donné $60$ € au vendeur
              qui lui a rendu $${60 - a * nbre}$ €.<br>

              Combien de mangas ${prenom1} a-t-elle achetés ?  `

          this.correction = `On lui a rendu $${60 - a * nbre}$ €, donc les mangas ont coûté $(60-${60 - a * nbre})$ €, soit $${a * nbre}$ € .<br>
          Le prix d'un manga est  $${a}$ €, donc  le nombre de  mangas est  donné par $${a * nbre}\\div ${a}=${nbre}$.`
        }
        if (this.interactif) { this.optionsChampTexte = { texteApres: ' mangas' } }
        this.canEnonce = this.question
        this.canReponseACompleter = '$\\dots$ mangas'
        break
    }
  }
}