From eed5967fede37764f3fba59a0fe187a3f414412b Mon Sep 17 00:00:00 2001
From: RFDS <regis.ferreirads@ac-nice.fr>
Date: Wed, 18 Dec 2024 11:23:29 +0100
Subject: [PATCH 1/7] 
 exercice_conversions_seconde_modifs_allexercices_Demarche_scientifique_REA

---
 src/exercices/2NDE/2DS-REA.ts | 140 ++++++++++++++++++++++++++++++++++
 src/json/allExercice.json     |  16 ++++
 2 files changed, 156 insertions(+)
 create mode 100644 src/exercices/2NDE/2DS-REA.ts

diff --git a/src/exercices/2NDE/2DS-REA.ts b/src/exercices/2NDE/2DS-REA.ts
new file mode 100644
index 000000000..cac03d4ca
--- /dev/null
+++ b/src/exercices/2NDE/2DS-REA.ts
@@ -0,0 +1,140 @@
+/**
+ * 2DS-REA.ts // Conversions
+ * @author Régis Ferreira Da Silva
+ * @date 2024-12-18
+ */
+
+import { combinaisonListes } from '../../lib/outils/arrayOutils'
+import Exercice from '../Exercice'
+import { listeQuestionsToContenu, randint } from '../../modules/outils.js'
+import { chiffresSignificatifs } from '../../lib/outils_phys/ecritures'
+import { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'
+import { approximatelyCompare } from '../../lib/interactif/comparisonFunctions'
+import { handleAnswers } from '../../lib/interactif/gestionInteractif'
+import { prenom } from '../../lib/outils/Personne'
+
+// à remplacer
+export const titre = 'Effectuer des procédures courantes (calculs, représentations, collectes de données, etc.).'
+export const interactifReady = true
+export const interactifType = 'mathLive'
+// à remplacer
+export const dateDePublication = '18/12/2024'
+// à remplacer : pnpm getNewUuid pour récupérer l'UUID pour un nouvel exercice
+export const uuid = '1dd27'
+// à remplacer "test-2" par la référence dans le référentiel (disponible dans "src/json/allExercice.json")
+export const refs = {
+    'fr-fr': ['2DS-REA']
+}
+
+export default class Conversions extends Exercice {
+    constructor() {
+        super()
+        this.nbQuestions = 1
+        this.sup = 1
+        this.besoinFormulaireNumerique = ['Choix des questions', 3, "1 : Conversion grandeur simple (novice)\n2 : Conversion grandeur composée  (confirmé)\n3 : Conversion grandeur composée  (expert)"]
+    }
+
+    nouvelleVersion() {
+        this.listeQuestions = []
+        this.listeCorrections = []
+
+        let typesDeQuestionsDisponibles
+        if (this.sup === 1) {
+            typesDeQuestionsDisponibles = ['novice']
+        } else if (this.sup === 2) {
+            typesDeQuestionsDisponibles = ['confirme']
+        } else if (this.sup === 3) {
+            typesDeQuestionsDisponibles = ['expert']
+        }
+
+        const listeTypeDeQuestions = combinaisonListes(typesDeQuestionsDisponibles, this.nbQuestions)
+
+        for (let i = 0, cpt = 0; i < this.nbQuestions && cpt < 50;) {
+            // variables conversions simples
+            const N = randint(200, 500)
+            const unitesList = ['m', 'g', 'L', 'A', 'V', 'W', 'J']
+            const unitesConvertieList=['déci','centi','milli','déca','hecto','kilo']
+            const symbolesUniteConvertieList=['d','c','m','da','h','k']
+            const explicitationUniteConvertieList=['un dixième','un centième','un millième','une dizaine','une centaine','un millier']
+            const facteursConversionUniteList=['10 fois plus grand','100 fois plus grand','1000 fois plus grand','10 fois plus petit','100 fois plus petit','1000 fois plus petit']
+            const NExpressionConvertiList = ['${N}\text{${unitesList[n_unite-1]}\times 10','${N}\text{${unitesList[n_unite-1]}\times 100','${N}\text{${unitesList[n_unite-1]}\times 1000','\dfrac{${N}\text{${unitesList[n_unite-1]}}{10}','\dfrac{${N}\text{${unitesList[n_unite-1]}}{100}','\dfrac{${N}\text{${unitesList[n_unite-1]}}{1000}']
+            const NConvertiList = [N*10,N*100,N*1000,N/10,N/100,N/1000]
+            n_unite =randint(1,6)//choix de l'unité
+            // variables conversions vitesse
+            const Vkmh=randint(25,120)
+            const Vms=Vkmh/3.6
+            switch (listeTypeDeQuestions[i]) {
+                case 'novice':
+                    // On énonce la question
+                    texte = `Aider ${prenom} à réaliser l(a)es conversion(s) d'unité suivante(s) : <br>`
+                    //   On y ajoute le champ de réponse
+                    this.question = ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: "$${N}\, \text{${unitesList[n_unite-1]}} = $", texteApres: '$\text{${symbolesUniteConvertieList[n_unite]}}\text{${unitesList[n_unite-1]}}$' })
+                    //   On génère la réponse
+                    this.reponse = NConvertiList[n_unite-1]
+                    //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
+                    handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
+                    //   On écrit la correction
+                    this.correction = `Pour réaliser la conversion, il suffit de savoir que 1 ${unitesConvertieList[n_unite-1]} correspond à ${explicitationUniteConvertieList[n_unite-1]} d'une unité. <br> 
+                    Une unité est donc ${facteursConversionUniteList[n_unite-1]} qu'un ${unitesConvertieList[n_unite-1]} . <br>
+                    Par conséquent $${N} \text{${unitesList[n_unite-1]}}= ${NExpressionConvertiList[n_unite-1]}=${NConvertiList[n_unite-1]}\,\text{${symbolesUniteConvertieList[n_unite]}}\text{${unitesList[n_unite-1]}}$`
+                    // fin question
+                    break
+                case 'confirme':
+                    // On énonce la question
+                    this.question = `Aider ${prenom} à réaliser l(a)es conversion(s) d'unité de vitesse suivante(s) : <br>`
+                    //   On y ajoute le champ de réponse
+                    this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: "${Vkmh}\, \text{km/h} =$", texteApres: 'm/s' })
+                    //   On génère la réponse
+                    this.reponse = Vms
+                    //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
+                    handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
+                    //   On écrit la correction
+                    this.correction = `Il s'agit de faire ici une double conversion : les kilomètres en mètres et les heures en seconde. <br>
+                    <ul>
+                    <li>1 kilomètre correspond à 1000 mètres,</li>
+                    <li>1 heure correspond à 3 600 secondes ($60\times 60\,\text{s}$).</li>
+                    </ul>
+                    Ramenons-non à la formule de la vitesse en faisant figurer les unités :<br>
+                    $v=\dfrac{\text{distance parcourue}}{\text{durée du trajet}}=\dfrac{${Vkmh}\,\text{km}}{1 h}=\dfrac{${Vkmh}\times\text{1 km}}{1 h}$<br>
+                    Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br>
+                    $v=\dfrac{${Vkmh}\times\text{1 km}}{\text{1 h}}=\dfrac{${Vkmh}\times\text{1 000 m}}{\text{3600 s}}=${Vms} \,\text{m/s}$<br>
+                    On peut donc écrire que $v=${Vkmh} \,\text{km/h} =${Vms} \,\text{m/s}$
+                    `
+                    // fin question
+                    break
+                case 'expert':
+                    // On énonce la question
+                    this.question = `Aider ${prenom} à réaliser l(a)es conversion(s) d'unité de vitesse suivante(s) : <br>`
+                    //   On y ajoute le champ de réponse
+                    this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: "${Vms}\, \text{m/s} =$", texteApres: 'km/h' })
+                    //   On génère la réponse
+                    this.reponse = Vms
+                    //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
+                    handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
+                    //   On écrit la correction
+                    this.correction = `Il s'agit de faire ici une double conversion : les mètres en kilomètres et les secondes en heures. <br>
+                    <ul>
+                    <li>Comme 1 kilomètre correspond à 1000 mètre alors 1 mètre correspond donc à $\dfrac{1}{1000}\,\text{km}$.</li>
+                    <li>Comme 1 heure correspond à 3 600 s alors 1 seconde correspond donc à $\dfrac{1}{3600}\,\text{h}$.</li>
+                    </ul>
+                    Ramenons-non à la formule de la vitesse en faisant figurer les unités :<br>
+                    $v=\dfrac{\text{distance parcourue}}{\text{durée du trajet}}=\dfrac{${Vms}\,\text{m}}{1 s}=\dfrac{${Vkmh}\times\text{1 m}}{1 s}$<br>
+                    Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br>
+                    $v=\dfrac{${Vms}\times\text{1 m}}{\text{1 s}}=\dfrac{\frac{${Vms}\times\text{1 km}}{\text{1 000}}}{\frac{\text{1 h}}{3 600}}=${Vkmh} \,\text{km/h}$<br>
+                    On peut donc écrire que $v=${Vms} \,\text{m/s} =${Vkmh} \,\text{km/h}$
+                    `
+                    // fin question
+                    break
+            }
+
+            if (this.questionJamaisPosee(i)) { // Si la question n'a jamais été posée, on en créé une autre, tgL ne peut pas prendre la même valeur
+                this.listeQuestions.push(this.question!) // Sinon on enregistre la question dans listeQuestions
+                this.listeCorrections.push(this.correction!) // On fait pareil pour la correction
+                i++ // On passe à la question suivante
+            }
+            cpt++ // Sinon on incrémente le compteur d'essai pour avoir une question nouvelle
+        }
+
+        listeQuestionsToContenu(this) // La liste de question et la liste de la correction
+    }
+}
diff --git a/src/json/allExercice.json b/src/json/allExercice.json
index 8b20f93d5..7e29d2960 100644
--- a/src/json/allExercice.json
+++ b/src/json/allExercice.json
@@ -1,5 +1,21 @@
 {
   "2NDE": {
+    "2DS":{
+      "2DS-ANA":{
+        "ref": "DS-ANA",
+        "uuid": "",
+        "url": "2NDE/DS-ANA.js",
+        "titre": "Évaluer des ordres de grandeur.",
+        "tags": {}
+      },
+      "2DS-REA":{
+        "ref": "DS-REA",
+        "uuid": "",
+        "url": "2NDE/DS-REA.js",
+        "titre": "Effectuer des procédures courantes (calculs, représentations, collectes de données, etc.).",
+        "tags": {}
+      },
+    },
     "2CM1": {
       "2CM1-1": {
         "ref": "2CM1-1",
-- 
GitLab


From 113fe8c3237325d0ce5e4074c6c06727ef203625 Mon Sep 17 00:00:00 2001
From: ThibGiauffret <thibault.giauffret@ac-nice.fr>
Date: Thu, 19 Dec 2024 21:37:08 +0100
Subject: [PATCH 2/7] =?UTF-8?q?Fix=20r=C3=A9f=C3=A9rentiel.=20Quelques=20f?=
 =?UTF-8?q?ix=20de=20d=C3=A9claration=20de=20variables=20et=20de=20mise=20?=
 =?UTF-8?q?en=20forme=20des=20=C3=A9nonc=C3=A9s.=20=C3=80=20terminer.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/exercices/2NDE/2DS-REA.ts  | 170 ++++++++++++++++-----------------
 src/json/allExercice.json      |  10 +-
 src/json/levelsThemesList.json |   3 +
 tasks/emptyRef2022.json        |   1 +
 4 files changed, 94 insertions(+), 90 deletions(-)

diff --git a/src/exercices/2NDE/2DS-REA.ts b/src/exercices/2NDE/2DS-REA.ts
index cac03d4ca..ba5086405 100644
--- a/src/exercices/2NDE/2DS-REA.ts
+++ b/src/exercices/2NDE/2DS-REA.ts
@@ -23,73 +23,73 @@ export const dateDePublication = '18/12/2024'
 export const uuid = '1dd27'
 // à remplacer "test-2" par la référence dans le référentiel (disponible dans "src/json/allExercice.json")
 export const refs = {
-    'fr-fr': ['2DS-REA']
+  'fr-fr': ['2DS-REA']
 }
 
 export default class Conversions extends Exercice {
-    constructor() {
-        super()
-        this.nbQuestions = 1
-        this.sup = 1
-        this.besoinFormulaireNumerique = ['Choix des questions', 3, "1 : Conversion grandeur simple (novice)\n2 : Conversion grandeur composée  (confirmé)\n3 : Conversion grandeur composée  (expert)"]
-    }
+  constructor () {
+    super()
+    this.nbQuestions = 1
+    this.sup = 1
+    this.besoinFormulaireNumerique = ['Choix des questions', 3, '1 : Conversion grandeur simple (novice)\n2 : Conversion grandeur composée  (confirmé)\n3 : Conversion grandeur composée  (expert)']
+  }
 
-    nouvelleVersion() {
-        this.listeQuestions = []
-        this.listeCorrections = []
+  nouvelleVersion () {
+    this.listeQuestions = []
+    this.listeCorrections = []
 
-        let typesDeQuestionsDisponibles
-        if (this.sup === 1) {
-            typesDeQuestionsDisponibles = ['novice']
-        } else if (this.sup === 2) {
-            typesDeQuestionsDisponibles = ['confirme']
-        } else if (this.sup === 3) {
-            typesDeQuestionsDisponibles = ['expert']
-        }
+    let typesDeQuestionsDisponibles
+    if (this.sup === 1) {
+      typesDeQuestionsDisponibles = ['novice']
+    } else if (this.sup === 2) {
+      typesDeQuestionsDisponibles = ['confirme']
+    } else if (this.sup === 3) {
+      typesDeQuestionsDisponibles = ['expert']
+    }
 
-        const listeTypeDeQuestions = combinaisonListes(typesDeQuestionsDisponibles, this.nbQuestions)
+    const listeTypeDeQuestions = combinaisonListes(typesDeQuestionsDisponibles, this.nbQuestions)
 
-        for (let i = 0, cpt = 0; i < this.nbQuestions && cpt < 50;) {
-            // variables conversions simples
-            const N = randint(200, 500)
-            const unitesList = ['m', 'g', 'L', 'A', 'V', 'W', 'J']
-            const unitesConvertieList=['déci','centi','milli','déca','hecto','kilo']
-            const symbolesUniteConvertieList=['d','c','m','da','h','k']
-            const explicitationUniteConvertieList=['un dixième','un centième','un millième','une dizaine','une centaine','un millier']
-            const facteursConversionUniteList=['10 fois plus grand','100 fois plus grand','1000 fois plus grand','10 fois plus petit','100 fois plus petit','1000 fois plus petit']
-            const NExpressionConvertiList = ['${N}\text{${unitesList[n_unite-1]}\times 10','${N}\text{${unitesList[n_unite-1]}\times 100','${N}\text{${unitesList[n_unite-1]}\times 1000','\dfrac{${N}\text{${unitesList[n_unite-1]}}{10}','\dfrac{${N}\text{${unitesList[n_unite-1]}}{100}','\dfrac{${N}\text{${unitesList[n_unite-1]}}{1000}']
-            const NConvertiList = [N*10,N*100,N*1000,N/10,N/100,N/1000]
-            n_unite =randint(1,6)//choix de l'unité
-            // variables conversions vitesse
-            const Vkmh=randint(25,120)
-            const Vms=Vkmh/3.6
-            switch (listeTypeDeQuestions[i]) {
-                case 'novice':
-                    // On énonce la question
-                    texte = `Aider ${prenom} à réaliser l(a)es conversion(s) d'unité suivante(s) : <br>`
-                    //   On y ajoute le champ de réponse
-                    this.question = ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: "$${N}\, \text{${unitesList[n_unite-1]}} = $", texteApres: '$\text{${symbolesUniteConvertieList[n_unite]}}\text{${unitesList[n_unite-1]}}$' })
-                    //   On génère la réponse
-                    this.reponse = NConvertiList[n_unite-1]
-                    //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
-                    handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
-                    //   On écrit la correction
-                    this.correction = `Pour réaliser la conversion, il suffit de savoir que 1 ${unitesConvertieList[n_unite-1]} correspond à ${explicitationUniteConvertieList[n_unite-1]} d'une unité. <br> 
-                    Une unité est donc ${facteursConversionUniteList[n_unite-1]} qu'un ${unitesConvertieList[n_unite-1]} . <br>
-                    Par conséquent $${N} \text{${unitesList[n_unite-1]}}= ${NExpressionConvertiList[n_unite-1]}=${NConvertiList[n_unite-1]}\,\text{${symbolesUniteConvertieList[n_unite]}}\text{${unitesList[n_unite-1]}}$`
-                    // fin question
-                    break
-                case 'confirme':
-                    // On énonce la question
-                    this.question = `Aider ${prenom} à réaliser l(a)es conversion(s) d'unité de vitesse suivante(s) : <br>`
-                    //   On y ajoute le champ de réponse
-                    this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: "${Vkmh}\, \text{km/h} =$", texteApres: 'm/s' })
-                    //   On génère la réponse
-                    this.reponse = Vms
-                    //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
-                    handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
-                    //   On écrit la correction
-                    this.correction = `Il s'agit de faire ici une double conversion : les kilomètres en mètres et les heures en seconde. <br>
+    for (let i = 0, cpt = 0; i < this.nbQuestions && cpt < 50;) {
+      // variables conversions simples
+      const N = randint(200, 500)
+      const n_unite = randint(1, 6)// choix de l'unité
+      const unitesList = ['m', 'g', 'L', 'A', 'V', 'W', 'J']
+      const unitesConvertieList = ['déci', 'centi', 'milli', 'déca', 'hecto', 'kilo']
+      const symbolesUniteConvertieList = ['d', 'c', 'm', 'da', 'h', 'k']
+      const explicitationUniteConvertieList = ['un dixième', 'un centième', 'un millième', 'une dizaine', 'une centaine', 'un millier']
+      const facteursConversionUniteList = ['10 fois plus grand', '100 fois plus grand', '1000 fois plus grand', '10 fois plus petit', '100 fois plus petit', '1000 fois plus petit']
+      const NExpressionConvertiList = ['${N}\text{${unitesList[n_unite-1]}\times 10', '${N}\text{${unitesList[n_unite-1]}\times 100', '${N}\text{${unitesList[n_unite-1]}\times 1000', '\dfrac{${N}\text{${unitesList[n_unite-1]}}{10}', '\dfrac{${N}\text{${unitesList[n_unite-1]}}{100}', '\dfrac{${N}\text{${unitesList[n_unite-1]}}{1000}']
+      const NConvertiList = [N * 10, N * 100, N * 1000, N / 10, N / 100, N / 1000]
+      // variables conversions vitesse
+      const Vkmh = randint(25, 120)
+      const Vms = Vkmh / 3.6
+      switch (listeTypeDeQuestions[i]) {
+        case 'novice':
+          // On énonce la question
+          this.question = `Aider ${prenom()} à réaliser l(a)es conversion(s) d'unité suivante(s) : <br>`
+          //   On y ajoute le champ de réponse
+          this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${N}\\, \\text{${unitesList[n_unite - 1]}} =$`, texteApres: `$\\text{ ${symbolesUniteConvertieList[n_unite]}}\\text{${unitesList[n_unite - 1]}}$` })
+          //   On génère la réponse
+          this.reponse = NConvertiList[n_unite - 1]
+          //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
+          handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
+          //   On écrit la correction
+          this.correction = `Pour réaliser la conversion, il suffit de savoir que 1 ${unitesConvertieList[n_unite - 1]} correspond à ${explicitationUniteConvertieList[n_unite - 1]} d'une unité. <br> 
+                    Une unité est donc ${facteursConversionUniteList[n_unite - 1]} qu'un ${unitesConvertieList[n_unite - 1]} . <br>
+                    Par conséquent $${N} \text{${unitesList[n_unite - 1]}}= ${NExpressionConvertiList[n_unite - 1]}=${NConvertiList[n_unite - 1]}\,\text{${symbolesUniteConvertieList[n_unite]}}\text{${unitesList[n_unite - 1]}}$`
+          // fin question
+          break
+        case 'confirme':
+          // On énonce la question
+          this.question = `Aider ${prenom()} à réaliser l(a)es conversion(s) d'unité de vitesse suivante(s) : <br>`
+          //   On y ajoute le champ de réponse
+          this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${Vkmh}\\, \\text{km/h} =$`, texteApres: 'm/s' })
+          //   On génère la réponse
+          this.reponse = Vms
+          //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
+          handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
+          //   On écrit la correction
+          this.correction = `Il s'agit de faire ici une double conversion : les kilomètres en mètres et les heures en seconde. <br>
                     <ul>
                     <li>1 kilomètre correspond à 1000 mètres,</li>
                     <li>1 heure correspond à 3 600 secondes ($60\times 60\,\text{s}$).</li>
@@ -100,19 +100,19 @@ export default class Conversions extends Exercice {
                     $v=\dfrac{${Vkmh}\times\text{1 km}}{\text{1 h}}=\dfrac{${Vkmh}\times\text{1 000 m}}{\text{3600 s}}=${Vms} \,\text{m/s}$<br>
                     On peut donc écrire que $v=${Vkmh} \,\text{km/h} =${Vms} \,\text{m/s}$
                     `
-                    // fin question
-                    break
-                case 'expert':
-                    // On énonce la question
-                    this.question = `Aider ${prenom} à réaliser l(a)es conversion(s) d'unité de vitesse suivante(s) : <br>`
-                    //   On y ajoute le champ de réponse
-                    this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: "${Vms}\, \text{m/s} =$", texteApres: 'km/h' })
-                    //   On génère la réponse
-                    this.reponse = Vms
-                    //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
-                    handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
-                    //   On écrit la correction
-                    this.correction = `Il s'agit de faire ici une double conversion : les mètres en kilomètres et les secondes en heures. <br>
+          // fin question
+          break
+        case 'expert':
+          // On énonce la question
+          this.question = `Aider ${prenom()} à réaliser l(a)es conversion(s) d'unité de vitesse suivante(s) : <br>`
+          //   On y ajoute le champ de réponse
+          this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${Vms}\\, \\text{m/s} =$`, texteApres: 'km/h' })
+          //   On génère la réponse
+          this.reponse = Vms
+          //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
+          handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
+          //   On écrit la correction
+          this.correction = `Il s'agit de faire ici une double conversion : les mètres en kilomètres et les secondes en heures. <br>
                     <ul>
                     <li>Comme 1 kilomètre correspond à 1000 mètre alors 1 mètre correspond donc à $\dfrac{1}{1000}\,\text{km}$.</li>
                     <li>Comme 1 heure correspond à 3 600 s alors 1 seconde correspond donc à $\dfrac{1}{3600}\,\text{h}$.</li>
@@ -123,18 +123,18 @@ export default class Conversions extends Exercice {
                     $v=\dfrac{${Vms}\times\text{1 m}}{\text{1 s}}=\dfrac{\frac{${Vms}\times\text{1 km}}{\text{1 000}}}{\frac{\text{1 h}}{3 600}}=${Vkmh} \,\text{km/h}$<br>
                     On peut donc écrire que $v=${Vms} \,\text{m/s} =${Vkmh} \,\text{km/h}$
                     `
-                    // fin question
-                    break
-            }
+          // fin question
+          break
+      }
 
-            if (this.questionJamaisPosee(i)) { // Si la question n'a jamais été posée, on en créé une autre, tgL ne peut pas prendre la même valeur
-                this.listeQuestions.push(this.question!) // Sinon on enregistre la question dans listeQuestions
-                this.listeCorrections.push(this.correction!) // On fait pareil pour la correction
-                i++ // On passe à la question suivante
-            }
-            cpt++ // Sinon on incrémente le compteur d'essai pour avoir une question nouvelle
-        }
-
-        listeQuestionsToContenu(this) // La liste de question et la liste de la correction
+      if (this.questionJamaisPosee(i)) { // Si la question n'a jamais été posée, on en créé une autre, tgL ne peut pas prendre la même valeur
+        this.listeQuestions.push(this.question!) // Sinon on enregistre la question dans listeQuestions
+        this.listeCorrections.push(this.correction!) // On fait pareil pour la correction
+        i++ // On passe à la question suivante
+      }
+      cpt++ // Sinon on incrémente le compteur d'essai pour avoir une question nouvelle
     }
+
+    listeQuestionsToContenu(this) // La liste de question et la liste de la correction
+  }
 }
diff --git a/src/json/allExercice.json b/src/json/allExercice.json
index 7e29d2960..32bdf2187 100644
--- a/src/json/allExercice.json
+++ b/src/json/allExercice.json
@@ -2,19 +2,19 @@
   "2NDE": {
     "2DS":{
       "2DS-ANA":{
-        "ref": "DS-ANA",
+        "ref": "2DS-ANA",
         "uuid": "",
-        "url": "2NDE/DS-ANA.js",
+        "url": "2NDE/2DS-ANA.js",
         "titre": "Évaluer des ordres de grandeur.",
         "tags": {}
       },
       "2DS-REA":{
-        "ref": "DS-REA",
+        "ref": "2DS-REA",
         "uuid": "",
-        "url": "2NDE/DS-REA.js",
+        "url": "2NDE/2DS-REA.js",
         "titre": "Effectuer des procédures courantes (calculs, représentations, collectes de données, etc.).",
         "tags": {}
-      },
+      }
     },
     "2CM1": {
       "2CM1-1": {
diff --git a/src/json/levelsThemesList.json b/src/json/levelsThemesList.json
index 43c8b67e7..7406a2173 100644
--- a/src/json/levelsThemesList.json
+++ b/src/json/levelsThemesList.json
@@ -1,4 +1,7 @@
 {
+  "2DS": {
+    "titre": "Test"
+  },
   "2CM1": {
     "titre": "Corps purs et mélanges au quotidien"
   },
diff --git a/tasks/emptyRef2022.json b/tasks/emptyRef2022.json
index 01986e5d6..d89e7f13f 100644
--- a/tasks/emptyRef2022.json
+++ b/tasks/emptyRef2022.json
@@ -1,5 +1,6 @@
 {
     "2NDE": {
+      "2DS": {},
       "2I": {},
       "2CM1": {},
       "2CM2": {},
-- 
GitLab


From e52036b89a31442ea08cd546f72058a8f438f927 Mon Sep 17 00:00:00 2001
From: ThibGiauffret <thibault.giauffret@ac-nice.fr>
Date: Thu, 19 Dec 2024 21:39:20 +0100
Subject: [PATCH 3/7] =?UTF-8?q?Mise=20=C3=A0=20jour=20du=20nom=20du=20th?=
 =?UTF-8?q?=C3=A8me=20"DS"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/json/levelsThemesList.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/json/levelsThemesList.json b/src/json/levelsThemesList.json
index 7406a2173..0897ac56a 100644
--- a/src/json/levelsThemesList.json
+++ b/src/json/levelsThemesList.json
@@ -1,6 +1,6 @@
 {
   "2DS": {
-    "titre": "Test"
+    "titre": "Démarche scientifique"
   },
   "2CM1": {
     "titre": "Corps purs et mélanges au quotidien"
-- 
GitLab


From f67b063bda3958293ff4bb5251acd4489d9c9491 Mon Sep 17 00:00:00 2001
From: RFDS <regis.ferreirads@ac-nice.fr>
Date: Fri, 20 Dec 2024 09:11:56 +0100
Subject: [PATCH 4/7] 
 tableau_conversion_s_h_pas_affichage_menu_erreur_affichage_une_sous-unite_formuleLaTeXliste_NExpressionConvertiList_correction

---
 src/exercices/2NDE/2DS-REA.ts | 57 +++++++++++++++++++++--------------
 1 file changed, 35 insertions(+), 22 deletions(-)

diff --git a/src/exercices/2NDE/2DS-REA.ts b/src/exercices/2NDE/2DS-REA.ts
index ba5086405..f2deacc47 100644
--- a/src/exercices/2NDE/2DS-REA.ts
+++ b/src/exercices/2NDE/2DS-REA.ts
@@ -27,14 +27,14 @@ export const refs = {
 }
 
 export default class Conversions extends Exercice {
-  constructor () {
+  constructor() {
     super()
-    this.nbQuestions = 1
+    this.nbQuestions = 3
     this.sup = 1
-    this.besoinFormulaireNumerique = ['Choix des questions', 3, '1 : Conversion grandeur simple (novice)\n2 : Conversion grandeur composée  (confirmé)\n3 : Conversion grandeur composée  (expert)']
+    this.besoinFormulaireNumerique = ['Choix des questions', 3, '1 : Conversion grandeur simple (novice)\\n2 : Conversion grandeur composée  (confirmé)\\n3 : Conversion grandeur composée  (expert)']
   }
 
-  nouvelleVersion () {
+  nouvelleVersion() {
     this.listeQuestions = []
     this.listeCorrections = []
 
@@ -52,13 +52,14 @@ export default class Conversions extends Exercice {
     for (let i = 0, cpt = 0; i < this.nbQuestions && cpt < 50;) {
       // variables conversions simples
       const N = randint(200, 500)
-      const n_unite = randint(1, 6)// choix de l'unité
+      const n_unite = randint(1, 7)// choix de l'unité
       const unitesList = ['m', 'g', 'L', 'A', 'V', 'W', 'J']
       const unitesConvertieList = ['déci', 'centi', 'milli', 'déca', 'hecto', 'kilo']
+      const n_sousunite = randint(1, 6)// choix de la sous-unité
       const symbolesUniteConvertieList = ['d', 'c', 'm', 'da', 'h', 'k']
       const explicitationUniteConvertieList = ['un dixième', 'un centième', 'un millième', 'une dizaine', 'une centaine', 'un millier']
       const facteursConversionUniteList = ['10 fois plus grand', '100 fois plus grand', '1000 fois plus grand', '10 fois plus petit', '100 fois plus petit', '1000 fois plus petit']
-      const NExpressionConvertiList = ['${N}\text{${unitesList[n_unite-1]}\times 10', '${N}\text{${unitesList[n_unite-1]}\times 100', '${N}\text{${unitesList[n_unite-1]}\times 1000', '\dfrac{${N}\text{${unitesList[n_unite-1]}}{10}', '\dfrac{${N}\text{${unitesList[n_unite-1]}}{100}', '\dfrac{${N}\text{${unitesList[n_unite-1]}}{1000}']
+      const NExpressionConvertiList = ['${N}\\,${unitesList[n_unite]}\\times 10', '${N}\\,${unitesList[n_unite]}\\times 100', '${N}\\,${unitesList[n_unite]}\\times 1000', '\\dfrac{${N}\\,${unitesList[n_unite]}}{10}', '\\dfrac{${N}\\,${unitesList[n_unite]}}{100}', '\\dfrac{${N}\\,${unitesList[n_unite]}}{1000}']
       const NConvertiList = [N * 10, N * 100, N * 1000, N / 10, N / 100, N / 1000]
       // variables conversions vitesse
       const Vkmh = randint(25, 120)
@@ -66,22 +67,22 @@ export default class Conversions extends Exercice {
       switch (listeTypeDeQuestions[i]) {
         case 'novice':
           // On énonce la question
-          this.question = `Aider ${prenom()} à réaliser l(a)es conversion(s) d'unité suivante(s) : <br>`
+          this.question = `Aide ${prenom()} à réaliser la conversion d'unité suivante : <br>`
           //   On y ajoute le champ de réponse
-          this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${N}\\, \\text{${unitesList[n_unite - 1]}} =$`, texteApres: `$\\text{ ${symbolesUniteConvertieList[n_unite]}}\\text{${unitesList[n_unite - 1]}}$` })
+          this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${N}\\, \\text{${unitesList[n_unite]}} =$`, texteApres: `$\\text{ ${symbolesUniteConvertieList[n_sousunite]}}\\text{${unitesList[n_unite]}}$` })
           //   On génère la réponse
-          this.reponse = NConvertiList[n_unite - 1]
+          this.reponse = NConvertiList[n_sousunite]
           //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
           handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
           //   On écrit la correction
-          this.correction = `Pour réaliser la conversion, il suffit de savoir que 1 ${unitesConvertieList[n_unite - 1]} correspond à ${explicitationUniteConvertieList[n_unite - 1]} d'une unité. <br> 
-                    Une unité est donc ${facteursConversionUniteList[n_unite - 1]} qu'un ${unitesConvertieList[n_unite - 1]} . <br>
-                    Par conséquent $${N} \text{${unitesList[n_unite - 1]}}= ${NExpressionConvertiList[n_unite - 1]}=${NConvertiList[n_unite - 1]}\,\text{${symbolesUniteConvertieList[n_unite]}}\text{${unitesList[n_unite - 1]}}$`
+          this.correction = `Pour réaliser la conversion, il suffit de savoir que 1 ${unitesConvertieList[n_sousunite]} correspond à ${explicitationUniteConvertieList[n_sousunite]} d'une unité. <br> 
+                    Une unité est donc ${facteursConversionUniteList[n_sousunite]} qu'un ${unitesConvertieList[n_sousunite]} . <br>
+                    Par conséquent $${N} \\,${unitesList[n_unite]}= ${NExpressionConvertiList[n_sousunite]}=${NConvertiList[n_sousunite]}\\,${symbolesUniteConvertieList[n_sousunite]}${unitesList[n_unite]}$`
           // fin question
           break
         case 'confirme':
           // On énonce la question
-          this.question = `Aider ${prenom()} à réaliser l(a)es conversion(s) d'unité de vitesse suivante(s) : <br>`
+          this.question = `Aide ${prenom()} à réaliser l(a)es conversion(s) d'unité de vitesse suivante(s) : <br>`
           //   On y ajoute le champ de réponse
           this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${Vkmh}\\, \\text{km/h} =$`, texteApres: 'm/s' })
           //   On génère la réponse
@@ -92,13 +93,13 @@ export default class Conversions extends Exercice {
           this.correction = `Il s'agit de faire ici une double conversion : les kilomètres en mètres et les heures en seconde. <br>
                     <ul>
                     <li>1 kilomètre correspond à 1000 mètres,</li>
-                    <li>1 heure correspond à 3 600 secondes ($60\times 60\,\text{s}$).</li>
+                    <li>1 heure correspond à 3 600 secondes ($60\\times 60\\,\\text{s}$).</li>
                     </ul>
                     Ramenons-non à la formule de la vitesse en faisant figurer les unités :<br>
-                    $v=\dfrac{\text{distance parcourue}}{\text{durée du trajet}}=\dfrac{${Vkmh}\,\text{km}}{1 h}=\dfrac{${Vkmh}\times\text{1 km}}{1 h}$<br>
+                    $v=\\dfrac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\dfrac{${Vkmh}\\,\\text{km}}{1 h}=\\dfrac{${Vkmh}\\times\\text{1 km}}{1 h}$<br>
                     Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br>
-                    $v=\dfrac{${Vkmh}\times\text{1 km}}{\text{1 h}}=\dfrac{${Vkmh}\times\text{1 000 m}}{\text{3600 s}}=${Vms} \,\text{m/s}$<br>
-                    On peut donc écrire que $v=${Vkmh} \,\text{km/h} =${Vms} \,\text{m/s}$
+                    $v=\\dfrac{${Vkmh}\\times\\text{1 km}}{\\text{1 h}}=\\dfrac{${Vkmh}\\times\\text{1 000 m}}{\\text{3600 s}}=${Vms} \\,\\text{m/s}$<br>
+                    On peut donc écrire que $v=${Vkmh} \\,\\text{km/h} =${Vms} \\,\\text{m/s}$
                     `
           // fin question
           break
@@ -114,14 +115,26 @@ export default class Conversions extends Exercice {
           //   On écrit la correction
           this.correction = `Il s'agit de faire ici une double conversion : les mètres en kilomètres et les secondes en heures. <br>
                     <ul>
-                    <li>Comme 1 kilomètre correspond à 1000 mètre alors 1 mètre correspond donc à $\dfrac{1}{1000}\,\text{km}$.</li>
-                    <li>Comme 1 heure correspond à 3 600 s alors 1 seconde correspond donc à $\dfrac{1}{3600}\,\text{h}$.</li>
+                    <li>Comme 1 kilomètre correspond à 1000 mètre alors 1 mètre correspond donc à $\\dfrac{1}{1000}\\,\\text{km}$.</li>
+                    <li>Comme 1 heure correspond à 3 600 s alors 1 seconde correspond donc à $\\dfrac{1}{3600}\\,\\text{h}$. <br>
+                    Le raisonnement précédent peut se ramener à une situation de proportionnalité : <br>
+                     $\\def\\arraystretch{1.5}
+              \\begin{array}{|c|c|}
+              \\hline
+              1 h & 3 600 \\text{s}\\\\
+              \\hline
+              $\\dfrac{1 h}{3 600}&1\\ \\text{s} \\\\
+              \\hline
+              \\end{array}
+              $<br><br>
+                    
+                    </li>
                     </ul>
                     Ramenons-non à la formule de la vitesse en faisant figurer les unités :<br>
-                    $v=\dfrac{\text{distance parcourue}}{\text{durée du trajet}}=\dfrac{${Vms}\,\text{m}}{1 s}=\dfrac{${Vkmh}\times\text{1 m}}{1 s}$<br>
+                    $v=\\dfrac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\dfrac{${Vms}\\,\\text{m}}{1 s}=\\dfrac{${Vkmh}\\times\\text{1 m}}{1 s}$<br>
                     Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br>
-                    $v=\dfrac{${Vms}\times\text{1 m}}{\text{1 s}}=\dfrac{\frac{${Vms}\times\text{1 km}}{\text{1 000}}}{\frac{\text{1 h}}{3 600}}=${Vkmh} \,\text{km/h}$<br>
-                    On peut donc écrire que $v=${Vms} \,\text{m/s} =${Vkmh} \,\text{km/h}$
+                    $v=\\dfrac{${Vms}\\times\\text{1 m}}{\\text{1 s}}=\\dfrac{\\frac{${Vms}\\times\\text{1 km}}{\\text{1 000}}}{\\frac{\\text{1 h}}{3 600}}=${Vkmh} \\,\\text{km/h}$<br>
+                    On peut donc écrire que $v=${Vms} \\,\\text{m/s} =${Vkmh} \\,\\text{km/h}$
                     `
           // fin question
           break
-- 
GitLab


From a4cf69b07ef81969a16b38b0ac7f6e33e76f42f5 Mon Sep 17 00:00:00 2001
From: RFDS <regis.ferreirads@ac-nice.fr>
Date: Fri, 20 Dec 2024 09:41:55 +0100
Subject: [PATCH 5/7] remplacement_dfrac_frac

---
 src/exercices/2NDE/2DS-REA.ts | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/exercices/2NDE/2DS-REA.ts b/src/exercices/2NDE/2DS-REA.ts
index f2deacc47..3a6ebcb52 100644
--- a/src/exercices/2NDE/2DS-REA.ts
+++ b/src/exercices/2NDE/2DS-REA.ts
@@ -29,7 +29,7 @@ export const refs = {
 export default class Conversions extends Exercice {
   constructor() {
     super()
-    this.nbQuestions = 3
+    this.nbQuestions = 1
     this.sup = 1
     this.besoinFormulaireNumerique = ['Choix des questions', 3, '1 : Conversion grandeur simple (novice)\\n2 : Conversion grandeur composée  (confirmé)\\n3 : Conversion grandeur composée  (expert)']
   }
@@ -59,7 +59,7 @@ export default class Conversions extends Exercice {
       const symbolesUniteConvertieList = ['d', 'c', 'm', 'da', 'h', 'k']
       const explicitationUniteConvertieList = ['un dixième', 'un centième', 'un millième', 'une dizaine', 'une centaine', 'un millier']
       const facteursConversionUniteList = ['10 fois plus grand', '100 fois plus grand', '1000 fois plus grand', '10 fois plus petit', '100 fois plus petit', '1000 fois plus petit']
-      const NExpressionConvertiList = ['${N}\\,${unitesList[n_unite]}\\times 10', '${N}\\,${unitesList[n_unite]}\\times 100', '${N}\\,${unitesList[n_unite]}\\times 1000', '\\dfrac{${N}\\,${unitesList[n_unite]}}{10}', '\\dfrac{${N}\\,${unitesList[n_unite]}}{100}', '\\dfrac{${N}\\,${unitesList[n_unite]}}{1000}']
+      const NExpressionConvertiList = ['${N}\\,${unitesList[n_unite]}\\times 10', '${N}\\,${unitesList[n_unite]}\\times 100', '${N}\\,${unitesList[n_unite]}\\times 1000', '\\frac{${N}\\,${unitesList[n_unite]}}{10}', '\\frac{${N}\\,${unitesList[n_unite]}}{100}', '\\frac{${N}\\,${unitesList[n_unite]}}{1000}']
       const NConvertiList = [N * 10, N * 100, N * 1000, N / 10, N / 100, N / 1000]
       // variables conversions vitesse
       const Vkmh = randint(25, 120)
@@ -77,7 +77,7 @@ export default class Conversions extends Exercice {
           //   On écrit la correction
           this.correction = `Pour réaliser la conversion, il suffit de savoir que 1 ${unitesConvertieList[n_sousunite]} correspond à ${explicitationUniteConvertieList[n_sousunite]} d'une unité. <br> 
                     Une unité est donc ${facteursConversionUniteList[n_sousunite]} qu'un ${unitesConvertieList[n_sousunite]} . <br>
-                    Par conséquent $${N} \\,${unitesList[n_unite]}= ${NExpressionConvertiList[n_sousunite]}=${NConvertiList[n_sousunite]}\\,${symbolesUniteConvertieList[n_sousunite]}${unitesList[n_unite]}$`
+                    Par conséquent $${N} ${unitesList[n_unite]}= ${NExpressionConvertiList[n_sousunite]}=${NConvertiList[n_sousunite]}\\,${symbolesUniteConvertieList[n_sousunite]}${unitesList[n_unite]}$`
           // fin question
           break
         case 'confirme':
@@ -96,9 +96,9 @@ export default class Conversions extends Exercice {
                     <li>1 heure correspond à 3 600 secondes ($60\\times 60\\,\\text{s}$).</li>
                     </ul>
                     Ramenons-non à la formule de la vitesse en faisant figurer les unités :<br>
-                    $v=\\dfrac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\dfrac{${Vkmh}\\,\\text{km}}{1 h}=\\dfrac{${Vkmh}\\times\\text{1 km}}{1 h}$<br>
+                    $v=\\frac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\frac{${Vkmh}\\,\\text{km}}{1 h}=\\frac{${Vkmh}\\times\\text{1 km}}{1 h}$<br>
                     Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br>
-                    $v=\\dfrac{${Vkmh}\\times\\text{1 km}}{\\text{1 h}}=\\dfrac{${Vkmh}\\times\\text{1 000 m}}{\\text{3600 s}}=${Vms} \\,\\text{m/s}$<br>
+                    $v=\\frac{${Vkmh}\\times\\text{1 km}}{\\text{1 h}}=\\frac{${Vkmh}\\times\\text{1 000 m}}{\\text{3600 s}}=${Vms} \\,\\text{m/s}$<br>
                     On peut donc écrire que $v=${Vkmh} \\,\\text{km/h} =${Vms} \\,\\text{m/s}$
                     `
           // fin question
@@ -115,15 +115,15 @@ export default class Conversions extends Exercice {
           //   On écrit la correction
           this.correction = `Il s'agit de faire ici une double conversion : les mètres en kilomètres et les secondes en heures. <br>
                     <ul>
-                    <li>Comme 1 kilomètre correspond à 1000 mètre alors 1 mètre correspond donc à $\\dfrac{1}{1000}\\,\\text{km}$.</li>
-                    <li>Comme 1 heure correspond à 3 600 s alors 1 seconde correspond donc à $\\dfrac{1}{3600}\\,\\text{h}$. <br>
+                    <li>Comme 1 kilomètre correspond à 1000 mètre alors 1 mètre correspond donc à $\\frac{1}{1000}\\,\\text{km}$.</li>
+                    <li>Comme 1 heure correspond à 3 600 s alors 1 seconde correspond donc à $\\frac{1}{3600}\\,\\text{h}$. <br>
                     Le raisonnement précédent peut se ramener à une situation de proportionnalité : <br>
                      $\\def\\arraystretch{1.5}
               \\begin{array}{|c|c|}
               \\hline
               1 h & 3 600 \\text{s}\\\\
               \\hline
-              $\\dfrac{1 h}{3 600}&1\\ \\text{s} \\\\
+              $\\frac{1 h}{3 600}&1\\ \\text{s} \\\\
               \\hline
               \\end{array}
               $<br><br>
@@ -131,9 +131,9 @@ export default class Conversions extends Exercice {
                     </li>
                     </ul>
                     Ramenons-non à la formule de la vitesse en faisant figurer les unités :<br>
-                    $v=\\dfrac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\dfrac{${Vms}\\,\\text{m}}{1 s}=\\dfrac{${Vkmh}\\times\\text{1 m}}{1 s}$<br>
+                    $v=\\frac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\frac{${Vms}\\,\\text{m}}{1 s}=\\frac{${Vkmh}\\times\\text{1 m}}{1 s}$<br>
                     Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br>
-                    $v=\\dfrac{${Vms}\\times\\text{1 m}}{\\text{1 s}}=\\dfrac{\\frac{${Vms}\\times\\text{1 km}}{\\text{1 000}}}{\\frac{\\text{1 h}}{3 600}}=${Vkmh} \\,\\text{km/h}$<br>
+                    $v=\\frac{${Vms}\\times\\text{1 m}}{\\text{1 s}}=\\frac{\\frac{${Vms}\\times\\text{1 km}}{\\text{1 000}}}{\\frac{\\text{1 h}}{3 600}}=${Vkmh} \\,\\text{km/h}$<br>
                     On peut donc écrire que $v=${Vms} \\,\\text{m/s} =${Vkmh} \\,\\text{km/h}$
                     `
           // fin question
-- 
GitLab


From 8afcbe95b0cc6d4e706aa5def7f63466eec5a47e Mon Sep 17 00:00:00 2001
From: ThibGiauffret <thibault.giauffret@ac-nice.fr>
Date: Sat, 4 Jan 2025 11:11:34 +0100
Subject: [PATCH 6/7] =?UTF-8?q?Am=C3=A9liorations=20multiples=20de=20fond?=
 =?UTF-8?q?=20et=20de=20forme=20:=20fix=20choix=20des=20questions,=20fix?=
 =?UTF-8?q?=20nombre=20de=20question,=20fix=20rendu=20latex...?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/exercices/2NDE/2DS-REA.ts | 113 +++++++++++++++++++---------------
 1 file changed, 65 insertions(+), 48 deletions(-)

diff --git a/src/exercices/2NDE/2DS-REA.ts b/src/exercices/2NDE/2DS-REA.ts
index 3a6ebcb52..c8482b91e 100644
--- a/src/exercices/2NDE/2DS-REA.ts
+++ b/src/exercices/2NDE/2DS-REA.ts
@@ -27,14 +27,16 @@ export const refs = {
 }
 
 export default class Conversions extends Exercice {
-  constructor() {
+  constructor () {
     super()
     this.nbQuestions = 1
     this.sup = 1
-    this.besoinFormulaireNumerique = ['Choix des questions', 3, '1 : Conversion grandeur simple (novice)\\n2 : Conversion grandeur composée  (confirmé)\\n3 : Conversion grandeur composée  (expert)']
+    this.besoinFormulaireNumerique = ['Choix des questions', 3, '1 : Conversion grandeur simple (novice)\n 2 : Conversion grandeur composée  (confirmé)\n 3 : Conversion grandeur composée  (expert)']
+    // On énonce la question
+    this.introduction = `Aide ${prenom()} à réaliser la (ou les) conversion(s) d'unité suivante(s) : <br>`
   }
 
-  nouvelleVersion() {
+  nouvelleVersion () {
     this.listeQuestions = []
     this.listeCorrections = []
 
@@ -49,42 +51,53 @@ export default class Conversions extends Exercice {
 
     const listeTypeDeQuestions = combinaisonListes(typesDeQuestionsDisponibles, this.nbQuestions)
 
-    for (let i = 0, cpt = 0; i < this.nbQuestions && cpt < 50;) {
+    for (let i = 0, N, cpt = 0; i < this.nbQuestions && cpt < 50;) {
       // variables conversions simples
-      const N = randint(200, 500)
-      const n_unite = randint(1, 7)// choix de l'unité
+      N = randint(200, 500)
+      const nUnite = randint(0, 6)// choix de l'unité
       const unitesList = ['m', 'g', 'L', 'A', 'V', 'W', 'J']
       const unitesConvertieList = ['déci', 'centi', 'milli', 'déca', 'hecto', 'kilo']
-      const n_sousunite = randint(1, 6)// choix de la sous-unité
+      const nSousUnite = randint(1, 5)// choix de la sous-unité
       const symbolesUniteConvertieList = ['d', 'c', 'm', 'da', 'h', 'k']
       const explicitationUniteConvertieList = ['un dixième', 'un centième', 'un millième', 'une dizaine', 'une centaine', 'un millier']
       const facteursConversionUniteList = ['10 fois plus grand', '100 fois plus grand', '1000 fois plus grand', '10 fois plus petit', '100 fois plus petit', '1000 fois plus petit']
-      const NExpressionConvertiList = ['${N}\\,${unitesList[n_unite]}\\times 10', '${N}\\,${unitesList[n_unite]}\\times 100', '${N}\\,${unitesList[n_unite]}\\times 1000', '\\frac{${N}\\,${unitesList[n_unite]}}{10}', '\\frac{${N}\\,${unitesList[n_unite]}}{100}', '\\frac{${N}\\,${unitesList[n_unite]}}{1000}']
+      const NExpressionConvertiList = [`${N}\\, \\text{${unitesList[nUnite]}}\\times 10`, `${N}\\, \\text{${unitesList[nUnite]}}\\times 100`, `${N}\\, \\text{${unitesList[nUnite]}}\\times 1000`, `\\cfrac{${N}\\, \\text{${unitesList[nUnite]}}}{10}`, `\\cfrac{${N}\\, \\text{${unitesList[nUnite]}}}{100}`, `\\cfrac{\\, \\text{${unitesList[nUnite]}}}{1000}`]
       const NConvertiList = [N * 10, N * 100, N * 1000, N / 10, N / 100, N / 1000]
       // variables conversions vitesse
       const Vkmh = randint(25, 120)
       const Vms = Vkmh / 3.6
+
+      const nbcs = 3
+
       switch (listeTypeDeQuestions[i]) {
         case 'novice':
-          // On énonce la question
-          this.question = `Aide ${prenom()} à réaliser la conversion d'unité suivante : <br>`
-          //   On y ajoute le champ de réponse
-          this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${N}\\, \\text{${unitesList[n_unite]}} =$`, texteApres: `$\\text{ ${symbolesUniteConvertieList[n_sousunite]}}\\text{${unitesList[n_unite]}}$` })
+
+          if (this.interactif) {
+            //   On y ajoute le champ de réponse interactif
+            this.question = ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${N}\\, \\text{${unitesList[nUnite]}} =$`, texteApres: `$\\text{ ${symbolesUniteConvertieList[nSousUnite]}}\\text{${unitesList[nUnite]}}$` })
+          } else {
+            this.question = `$${N}\\, \\text{${unitesList[nUnite]}} = ... \\, \\text{ ${symbolesUniteConvertieList[nSousUnite]}}\\text{${unitesList[nUnite]}}$
+            `
+          }
+
           //   On génère la réponse
-          this.reponse = NConvertiList[n_sousunite]
+          this.reponse = NConvertiList[nSousUnite]
           //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
           handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
           //   On écrit la correction
-          this.correction = `Pour réaliser la conversion, il suffit de savoir que 1 ${unitesConvertieList[n_sousunite]} correspond à ${explicitationUniteConvertieList[n_sousunite]} d'une unité. <br> 
-                    Une unité est donc ${facteursConversionUniteList[n_sousunite]} qu'un ${unitesConvertieList[n_sousunite]} . <br>
-                    Par conséquent $${N} ${unitesList[n_unite]}= ${NExpressionConvertiList[n_sousunite]}=${NConvertiList[n_sousunite]}\\,${symbolesUniteConvertieList[n_sousunite]}${unitesList[n_unite]}$`
+          this.correction = `Pour réaliser la conversion, il suffit de savoir que 1 ${unitesConvertieList[nSousUnite]} correspond à ${explicitationUniteConvertieList[nSousUnite]} d'une unité. <br> 
+                    Une unité est donc ${facteursConversionUniteList[nSousUnite]} qu'un ${unitesConvertieList[nSousUnite]} . <br>
+                    Par conséquent $${N}\\, \\text{${unitesList[nUnite]}} = ${NExpressionConvertiList[nSousUnite]}=${chiffresSignificatifs(NConvertiList[nSousUnite], nbcs)}\\, \\text{${symbolesUniteConvertieList[nSousUnite]}${unitesList[nUnite]}}$`
           // fin question
           break
         case 'confirme':
-          // On énonce la question
-          this.question = `Aide ${prenom()} à réaliser l(a)es conversion(s) d'unité de vitesse suivante(s) : <br>`
-          //   On y ajoute le champ de réponse
-          this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${Vkmh}\\, \\text{km/h} =$`, texteApres: 'm/s' })
+          if (this.interactif) {
+            //   On y ajoute le champ de réponse interactif
+            this.question = ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${chiffresSignificatifs(Vkmh, nbcs)}\\, \\text{km/h} =$`, texteApres: '$\\text{m/s}$' })
+          } else {
+            this.question = `$${chiffresSignificatifs(Vkmh, nbcs)}\\, \\text{km/h} = ... \\, \\text{m/s}$
+            `
+          }
           //   On génère la réponse
           this.reponse = Vms
           //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
@@ -95,52 +108,56 @@ export default class Conversions extends Exercice {
                     <li>1 kilomètre correspond à 1000 mètres,</li>
                     <li>1 heure correspond à 3 600 secondes ($60\\times 60\\,\\text{s}$).</li>
                     </ul>
-                    Ramenons-non à la formule de la vitesse en faisant figurer les unités :<br>
-                    $v=\\frac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\frac{${Vkmh}\\,\\text{km}}{1 h}=\\frac{${Vkmh}\\times\\text{1 km}}{1 h}$<br>
-                    Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br>
-                    $v=\\frac{${Vkmh}\\times\\text{1 km}}{\\text{1 h}}=\\frac{${Vkmh}\\times\\text{1 000 m}}{\\text{3600 s}}=${Vms} \\,\\text{m/s}$<br>
-                    On peut donc écrire que $v=${Vkmh} \\,\\text{km/h} =${Vms} \\,\\text{m/s}$
+                    Ramenons-nous à la formule de la vitesse en faisant figurer les unités :<br><br>
+                    $v=\\cfrac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\cfrac{${chiffresSignificatifs(Vkmh, nbcs)}\\,\\text{km}}{1\\, \\text{h}}=\\cfrac{${chiffresSignificatifs(Vkmh, nbcs)}\\times\\text{1 km}}{1\\, \\text{h}}$<br><br>
+                    Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br><br>
+                    $v=\\cfrac{${chiffresSignificatifs(Vkmh, nbcs)}\\times\\text{1 km}}{\\text{1\\, \\text{h}}}=\\cfrac{${chiffresSignificatifs(Vkmh, nbcs)}\\times\\text{1 000 m}}{\\text{3600 s}}=${chiffresSignificatifs(Vms, nbcs)} \\,\\text{m/s}$<br><br>
+                    On peut donc écrire que $v=${chiffresSignificatifs(Vkmh, nbcs)} \\,\\text{km/h} =${chiffresSignificatifs(Vms, nbcs)} \\,\\text{m/s}$
                     `
           // fin question
           break
         case 'expert':
-          // On énonce la question
-          this.question = `Aider ${prenom()} à réaliser l(a)es conversion(s) d'unité de vitesse suivante(s) : <br>`
-          //   On y ajoute le champ de réponse
-          this.question += ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${Vms}\\, \\text{m/s} =$`, texteApres: 'km/h' })
+          if (this.interactif) {
+            //   On y ajoute le champ de réponse interactif
+            this.question = ajouteChampTexteMathLive(this, i, 'inline largeur01', { texteAvant: `$${chiffresSignificatifs(Vms, nbcs)}\\, \\text{m/s} =$`, texteApres: '$\\text{hm/h}$' })
+          } else {
+            this.question = `$${chiffresSignificatifs(Vms, nbcs)}\\, \\text{m/s} = ... \\, \\text{km/h}$
+            `
+          }
           //   On génère la réponse
-          this.reponse = Vms
+          this.reponse = Vkmh
           //   On gère la réponse. Ici, on utilise la fonction approximatelyCompare pour vérifier la valeur de T
           handleAnswers(this, i, { reponse: { value: this.reponse, compare: approximatelyCompare } })
           //   On écrit la correction
           this.correction = `Il s'agit de faire ici une double conversion : les mètres en kilomètres et les secondes en heures. <br>
                     <ul>
-                    <li>Comme 1 kilomètre correspond à 1000 mètre alors 1 mètre correspond donc à $\\frac{1}{1000}\\,\\text{km}$.</li>
-                    <li>Comme 1 heure correspond à 3 600 s alors 1 seconde correspond donc à $\\frac{1}{3600}\\,\\text{h}$. <br>
-                    Le raisonnement précédent peut se ramener à une situation de proportionnalité : <br>
-                     $\\def\\arraystretch{1.5}
-              \\begin{array}{|c|c|}
-              \\hline
-              1 h & 3 600 \\text{s}\\\\
-              \\hline
-              $\\frac{1 h}{3 600}&1\\ \\text{s} \\\\
-              \\hline
-              \\end{array}
-              $<br><br>
+                    <li>Comme 1 kilomètre correspond à 1000 mètre alors 1 mètre correspond donc à $\\cfrac{1}{1000}\\,\\text{km}$.</li>
+                    <li>Comme 1 heure correspond à 3 600 s alors 1 seconde correspond donc à $\\cfrac{1}{3600}\\,\\text{h}$. <br>
+                    Le raisonnement précédent peut se ramener à une situation de proportionnalité : <br><br>
+
+                    $\\def\\arraystretch{1.5}
+                    \\begin{array}{|c|c|}
+                    \\hline
+                    1  \\text{h} & 3 600 \\text{s}\\\\
+                    \\hline
+                    \\cfrac{1  \\text{h}}{3 600} &1\\ \\text{s} \\\\
+                    \\hline
+                    \\end{array}
+                    $<br><br>
                     
                     </li>
                     </ul>
-                    Ramenons-non à la formule de la vitesse en faisant figurer les unités :<br>
-                    $v=\\frac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\frac{${Vms}\\,\\text{m}}{1 s}=\\frac{${Vkmh}\\times\\text{1 m}}{1 s}$<br>
-                    Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br>
-                    $v=\\frac{${Vms}\\times\\text{1 m}}{\\text{1 s}}=\\frac{\\frac{${Vms}\\times\\text{1 km}}{\\text{1 000}}}{\\frac{\\text{1 h}}{3 600}}=${Vkmh} \\,\\text{km/h}$<br>
-                    On peut donc écrire que $v=${Vms} \\,\\text{m/s} =${Vkmh} \\,\\text{km/h}$
+                    Ramenons-nous à la formule de la vitesse en faisant figurer les unités :<br><br>
+                    $v=\\cfrac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\cfrac{${chiffresSignificatifs(Vms, nbcs)}\\,\\text{m}}{1\\, \\text{s}}=\\cfrac{${chiffresSignificatifs(Vkmh, nbcs)}\\times\\text{1 m}}{1\\, \\text{s}}$<br><br>
+                    Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br><br>
+                    $v=\\cfrac{${chiffresSignificatifs(Vms, nbcs)}\\times\\text{1 m}}{\\text{1 s}}=\\cfrac{\\cfrac{${chiffresSignificatifs(Vms, nbcs)}\\times\\text{1 km}}{\\text{1 000}}}{\\cfrac{\\text{1 h}}{3 600}}=${chiffresSignificatifs(Vkmh, nbcs)} \\,\\text{km/h}$<br><br>
+                    On peut donc écrire que $v=${chiffresSignificatifs(Vms, nbcs)} \\,\\text{m/s} =${chiffresSignificatifs(Vkmh, nbcs)} \\,\\text{km/h}$
                     `
           // fin question
           break
       }
 
-      if (this.questionJamaisPosee(i)) { // Si la question n'a jamais été posée, on en créé une autre, tgL ne peut pas prendre la même valeur
+      if (this.questionJamaisPosee(i, N!)) { // Si la question n'a jamais été posée, on en créé une autre
         this.listeQuestions.push(this.question!) // Sinon on enregistre la question dans listeQuestions
         this.listeCorrections.push(this.correction!) // On fait pareil pour la correction
         i++ // On passe à la question suivante
-- 
GitLab


From 6632cf3d74a788833a0a781c2c68561ea6283ade Mon Sep 17 00:00:00 2001
From: ThibGiauffret <thibault.giauffret@ac-nice.fr>
Date: Sat, 4 Jan 2025 12:47:50 +0100
Subject: [PATCH 7/7] =?UTF-8?q?Corrections=20mineures=20(pb=20de=20sous=20?=
 =?UTF-8?q?unit=C3=A9=20et=20=C3=A9criture=20scientifique).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/exercices/2NDE/2DS-REA.ts | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/exercices/2NDE/2DS-REA.ts b/src/exercices/2NDE/2DS-REA.ts
index c8482b91e..dbc77fe85 100644
--- a/src/exercices/2NDE/2DS-REA.ts
+++ b/src/exercices/2NDE/2DS-REA.ts
@@ -7,7 +7,7 @@
 import { combinaisonListes } from '../../lib/outils/arrayOutils'
 import Exercice from '../Exercice'
 import { listeQuestionsToContenu, randint } from '../../modules/outils.js'
-import { chiffresSignificatifs } from '../../lib/outils_phys/ecritures'
+import { chiffresSignificatifs, ecritureScientifique } from '../../lib/outils_phys/ecritures'
 import { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'
 import { approximatelyCompare } from '../../lib/interactif/comparisonFunctions'
 import { handleAnswers } from '../../lib/interactif/gestionInteractif'
@@ -61,7 +61,7 @@ export default class Conversions extends Exercice {
       const symbolesUniteConvertieList = ['d', 'c', 'm', 'da', 'h', 'k']
       const explicitationUniteConvertieList = ['un dixième', 'un centième', 'un millième', 'une dizaine', 'une centaine', 'un millier']
       const facteursConversionUniteList = ['10 fois plus grand', '100 fois plus grand', '1000 fois plus grand', '10 fois plus petit', '100 fois plus petit', '1000 fois plus petit']
-      const NExpressionConvertiList = [`${N}\\, \\text{${unitesList[nUnite]}}\\times 10`, `${N}\\, \\text{${unitesList[nUnite]}}\\times 100`, `${N}\\, \\text{${unitesList[nUnite]}}\\times 1000`, `\\cfrac{${N}\\, \\text{${unitesList[nUnite]}}}{10}`, `\\cfrac{${N}\\, \\text{${unitesList[nUnite]}}}{100}`, `\\cfrac{\\, \\text{${unitesList[nUnite]}}}{1000}`]
+      const NExpressionConvertiList = [`${N}\\, \\text{${symbolesUniteConvertieList[nSousUnite]}${unitesList[nUnite]}}\\times 10`, `${N}\\, \\text{${symbolesUniteConvertieList[nSousUnite]}${unitesList[nUnite]}}\\times 100`, `${N}\\, \\text{${symbolesUniteConvertieList[nSousUnite]}${unitesList[nUnite]}}\\times 1000`, `\\cfrac{${N}\\, \\text{${symbolesUniteConvertieList[nSousUnite]}${unitesList[nUnite]}}}{10}`, `\\cfrac{${N}\\, \\text{${symbolesUniteConvertieList[nSousUnite]}${unitesList[nUnite]}}}{100}`, `\\cfrac{${N}\\, \\text{${symbolesUniteConvertieList[nSousUnite]}${unitesList[nUnite]}}}{1000}`]
       const NConvertiList = [N * 10, N * 100, N * 1000, N / 10, N / 100, N / 1000]
       // variables conversions vitesse
       const Vkmh = randint(25, 120)
@@ -87,7 +87,9 @@ export default class Conversions extends Exercice {
           //   On écrit la correction
           this.correction = `Pour réaliser la conversion, il suffit de savoir que 1 ${unitesConvertieList[nSousUnite]} correspond à ${explicitationUniteConvertieList[nSousUnite]} d'une unité. <br> 
                     Une unité est donc ${facteursConversionUniteList[nSousUnite]} qu'un ${unitesConvertieList[nSousUnite]} . <br>
-                    Par conséquent $${N}\\, \\text{${unitesList[nUnite]}} = ${NExpressionConvertiList[nSousUnite]}=${chiffresSignificatifs(NConvertiList[nSousUnite], nbcs)}\\, \\text{${symbolesUniteConvertieList[nSousUnite]}${unitesList[nUnite]}}$`
+                    Par conséquent $${N}\\, \\text{${unitesList[nUnite]}} = ${NExpressionConvertiList[nSousUnite]}=${NConvertiList[nSousUnite]}\\, \\text{${symbolesUniteConvertieList[nSousUnite]}${unitesList[nUnite]}}$.<br><br>
+                    En tenant compte des chiffres significatifs, on peut écrire que $${N}\\, \\text{${unitesList[nUnite]}} = ${ecritureScientifique(NConvertiList[nSousUnite], nbcs)}\\, \\text{${symbolesUniteConvertieList[nSousUnite]}${unitesList[nUnite]}}$.
+                    `
           // fin question
           break
         case 'confirme':
@@ -148,7 +150,7 @@ export default class Conversions extends Exercice {
                     </li>
                     </ul>
                     Ramenons-nous à la formule de la vitesse en faisant figurer les unités :<br><br>
-                    $v=\\cfrac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\cfrac{${chiffresSignificatifs(Vms, nbcs)}\\,\\text{m}}{1\\, \\text{s}}=\\cfrac{${chiffresSignificatifs(Vkmh, nbcs)}\\times\\text{1 m}}{1\\, \\text{s}}$<br><br>
+                    $v=\\cfrac{\\text{distance parcourue}}{\\text{durée du trajet}}=\\cfrac{${chiffresSignificatifs(Vms, nbcs)}\\,\\text{m}}{1\\, \\text{s}}=\\cfrac{${chiffresSignificatifs(Vms, nbcs)}\\times\\text{1 m}}{1\\, \\text{s}}$<br><br>
                     Il s'agit maintenant de reporter les conversions d'unité directement dans la formule comme suit :<br><br>
                     $v=\\cfrac{${chiffresSignificatifs(Vms, nbcs)}\\times\\text{1 m}}{\\text{1 s}}=\\cfrac{\\cfrac{${chiffresSignificatifs(Vms, nbcs)}\\times\\text{1 km}}{\\text{1 000}}}{\\cfrac{\\text{1 h}}{3 600}}=${chiffresSignificatifs(Vkmh, nbcs)} \\,\\text{km/h}$<br><br>
                     On peut donc écrire que $v=${chiffresSignificatifs(Vms, nbcs)} \\,\\text{m/s} =${chiffresSignificatifs(Vkmh, nbcs)} \\,\\text{km/h}$
-- 
GitLab