<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<!-- question: 0  -->
  <question type="category">
    <category>
      <text>$course$/top/I.6 Brüche am Zahlenstrahl/ungekürzt</text>
    </category>
    <info format="html">
      <text></text>
    </info>
    <idnumber></idnumber>
  </question>

<!-- question: 20997  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/3 - 10~15~17~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{3} \)?</p>
    <canvas id="canvas-10-3-10~15~17~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-3-10~15~17~22");
        drawNumberline(canvas, "10~15~17~22", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20995  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/3 - 10~15~20~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{3} \)?</p>
    <canvas id="canvas-10-3-10~15~20~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-3-10~15~20~22");
        drawNumberline(canvas, "10~15~20~22", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20829  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/3 - 6~10~12~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{3} \)?</p>
    <canvas id="canvas-10-3-6~10~12~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-3-6~10~12~13");
        drawNumberline(canvas, "6~10~12~13", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20825  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/3 - 6~10~12~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{3} \)?</p>
    <canvas id="canvas-10-3-6~10~12~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-3-6~10~12~16");
        drawNumberline(canvas, "6~10~12~16", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20867  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/3 - 7~9~10~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{3} \)?</p>
    <canvas id="canvas-10-3-7~9~10~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-3-7~9~10~13");
        drawNumberline(canvas, "7~9~10~13", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20595  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/4 - 0~4~8~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{4} \)?</p>
    <canvas id="canvas-10-4-0~4~8~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-4-0~4~8~10");
        drawNumberline(canvas, "0~4~8~10", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20991  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/4 - 10~13~17~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{4} \)?</p>
    <canvas id="canvas-10-4-10~13~17~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-4-10~13~17~19");
        drawNumberline(canvas, "10~13~17~19", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20625  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/4 - 1~4~6~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{4} \)?</p>
    <canvas id="canvas-10-4-1~4~6~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-4-1~4~6~10");
        drawNumberline(canvas, "1~4~6~10", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20777  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/4 - 5~10~11~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{4} \)?</p>
    <canvas id="canvas-10-4-5~10~11~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-4-5~10~11~14");
        drawNumberline(canvas, "5~10~11~14", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20779  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/4 - 5~10~14~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{4} \)?</p>
    <canvas id="canvas-10-4-5~10~14~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-4-5~10~14~15");
        drawNumberline(canvas, "5~10~14~15", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20903  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/4 - 8~10~14~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{4} \)?</p>
    <canvas id="canvas-10-4-8~10~14~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-4-8~10~14~19");
        drawNumberline(canvas, "8~10~14~19", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20939  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/4 - 9~10~13~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{4} \)?</p>
    <canvas id="canvas-10-4-9~10~13~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-4-9~10~13~16");
        drawNumberline(canvas, "9~10~13~16", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20785  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/6 - 5~10~12~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{6} \)?</p>
    <canvas id="canvas-10-6-5~10~12~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-6-5~10~12~16");
        drawNumberline(canvas, "5~10~12~16", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20827  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/6 - 6~10~13~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{6} \)?</p>
    <canvas id="canvas-10-6-6~10~13~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-6-6~10~13~16");
        drawNumberline(canvas, "6~10~13~16", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21007  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/7 - 10~12~15~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{7} \)?</p>
    <canvas id="canvas-10-7-10~12~15~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-7-10~12~15~19");
        drawNumberline(canvas, "10~12~15~19", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21013  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/7 - 10~15~19~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{7} \)?</p>
    <canvas id="canvas-10-7-10~15~19~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-7-10~15~19~21");
        drawNumberline(canvas, "10~15~19~21", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20847  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/7 - 6~10~12~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{7} \)?</p>
    <canvas id="canvas-10-7-6~10~12~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-7-6~10~12~16");
        drawNumberline(canvas, "6~10~12~16", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20887  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/7 - 7~10~12~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{7} \)?</p>
    <canvas id="canvas-10-7-7~10~12~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-7-7~10~12~16");
        drawNumberline(canvas, "7~10~12~16", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20639  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/8 - 1~4~8~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{8} \)?</p>
    <canvas id="canvas-10-8-1~4~8~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-8-1~4~8~10");
        drawNumberline(canvas, "1~4~8~10", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20677  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/8 - 2~4~5~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{8} \)?</p>
    <canvas id="canvas-10-8-2~4~5~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-8-2~4~5~10");
        drawNumberline(canvas, "2~4~5~10", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20755  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/8 - 4~5~10~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{8} \)?</p>
    <canvas id="canvas-10-8-4~5~10~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-8-4~5~10~12");
        drawNumberline(canvas, "4~5~10~12", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20757  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 10/8 - 4~7~9~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{10}{8} \)?</p>
    <canvas id="canvas-10-8-4~7~9~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-10-8-4~7~9~10");
        drawNumberline(canvas, "4~7~9~10", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21019  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/2 - 11~15~19~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{2} \)?</p>
    <canvas id="canvas-11-2-11~15~19~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-2-11~15~19~20");
        drawNumberline(canvas, "11~15~19~20", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20697  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/2 - 3~5~10~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{2} \)?</p>
    <canvas id="canvas-11-2-3~5~10~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-2-3~5~10~11");
        drawNumberline(canvas, "3~5~10~11", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20705  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/2 - 3~8~11~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{2} \)?</p>
    <canvas id="canvas-11-2-3~8~11~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-2-3~8~11~13");
        drawNumberline(canvas, "3~8~11~13", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20601  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/3 - 0~5~9~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{3} \)?</p>
    <canvas id="canvas-11-3-0~5~9~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-3-0~5~9~11");
        drawNumberline(canvas, "0~5~9~11", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20663  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/3 - 2~6~11~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{3} \)?</p>
    <canvas id="canvas-11-3-2~6~11~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-3-2~6~11~13");
        drawNumberline(canvas, "2~6~11~13", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20789  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/3 - 5~6~11~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{3} \)?</p>
    <canvas id="canvas-11-3-5~6~11~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-3-5~6~11~16");
        drawNumberline(canvas, "5~6~11~16", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20951  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/3 - 9~11~15~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{3} \)?</p>
    <canvas id="canvas-11-3-9~11~15~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-3-9~11~15~17");
        drawNumberline(canvas, "9~11~15~17", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20875  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/4 - 7~10~11~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{4} \)?</p>
    <canvas id="canvas-11-4-7~10~11~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-4-7~10~11~16");
        drawNumberline(canvas, "7~10~11~16", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20613  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/5 - 0~3~7~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{5} \)?</p>
    <canvas id="canvas-11-5-0~3~7~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-5-0~3~7~11");
        drawNumberline(canvas, "0~3~7~11", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20839  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/5 - 6~11~16~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{5} \)?</p>
    <canvas id="canvas-11-5-6~11~16~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-5-6~11~16~20");
        drawNumberline(canvas, "6~11~16~20", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20967  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/5 - 9~11~14~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{5} \)?</p>
    <canvas id="canvas-11-5-9~11~14~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-5-9~11~14~18");
        drawNumberline(canvas, "9~11~14~18", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21035  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/6 - 11~13~15~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{6} \)?</p>
    <canvas id="canvas-11-6-11~13~15~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-6-11~13~15~16");
        drawNumberline(canvas, "11~13~15~16", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20843  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/6 - 6~8~10~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{6} \)?</p>
    <canvas id="canvas-11-6-6~8~10~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-6-6~8~10~11");
        drawNumberline(canvas, "6~8~10~11", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20883  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/6 - 7~11~12~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{6} \)?</p>
    <canvas id="canvas-11-6-7~11~12~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-6-7~11~12~15");
        drawNumberline(canvas, "7~11~12~15", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20975  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/6 - 9~11~14~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{6} \)?</p>
    <canvas id="canvas-11-6-9~11~14~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-6-9~11~14~16");
        drawNumberline(canvas, "9~11~14~16", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21009  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/7 - 10~11~15~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{7} \)?</p>
    <canvas id="canvas-11-7-10~11~15~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-7-10~11~15~17");
        drawNumberline(canvas, "10~11~15~17", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21041  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/7 - 11~16~20~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{7} \)?</p>
    <canvas id="canvas-11-7-11~16~20~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-7-11~16~20~22");
        drawNumberline(canvas, "11~16~20~22", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20691  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/7 - 2~7~11~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{7} \)?</p>
    <canvas id="canvas-11-7-2~7~11~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-7-2~7~11~13");
        drawNumberline(canvas, "2~7~11~13", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20853  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/7 - 6~8~11~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{7} \)?</p>
    <canvas id="canvas-11-7-6~8~11~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-7-6~8~11~13");
        drawNumberline(canvas, "6~8~11~13", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20851  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/7 - 6~8~11~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{7} \)?</p>
    <canvas id="canvas-11-7-6~8~11~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-7-6~8~11~16");
        drawNumberline(canvas, "6~8~11~16", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20849  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/7 - 6~9~11~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{7} \)?</p>
    <canvas id="canvas-11-7-6~9~11~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-7-6~9~11~12");
        drawNumberline(canvas, "6~9~11~12", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20897  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/7 - 7~8~11~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{7} \)?</p>
    <canvas id="canvas-11-7-7~8~11~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-7-7~8~11~12");
        drawNumberline(canvas, "7~8~11~12", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20731  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/8 - 3~7~8~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{8} \)?</p>
    <canvas id="canvas-11-8-3~7~8~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-8-3~7~8~11");
        drawNumberline(canvas, "3~7~8~11", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20855  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 11/8 - 6~11~14~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{11}{8} \)?</p>
    <canvas id="canvas-11-8-6~11~14~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-11-8-6~11~14~17");
        drawNumberline(canvas, "6~11~14~17", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20627  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 1/2 - 1~3~5~6</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{1}{2} \)?</p>
    <canvas id="canvas-1-2-1~3~5~6" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-1-2-1~3~5~6");
        drawNumberline(canvas, "1~3~5~6", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20631  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 1/2 - 1~3~6~8</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{1}{2} \)?</p>
    <canvas id="canvas-1-2-1~3~6~8" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-1-2-1~3~6~8");
        drawNumberline(canvas, "1~3~6~8", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20879  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 12/5 - 7~12~17~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{12}{5} \)?</p>
    <canvas id="canvas-12-5-7~12~17~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-12-5-7~12~17~19");
        drawNumberline(canvas, "7~12~17~19", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20965  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 12/5 - 9~12~15~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{12}{5} \)?</p>
    <canvas id="canvas-12-5-9~12~15~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-12-5-9~12~15~20");
        drawNumberline(canvas, "9~12~15~20", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21045  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 12/7 - 11~12~14~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{12}{7} \)?</p>
    <canvas id="canvas-12-7-11~12~14~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-12-7-11~12~14~15");
        drawNumberline(canvas, "11~12~14~15", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20893  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 12/7 - 7~12~14~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{12}{7} \)?</p>
    <canvas id="canvas-12-7-7~12~14~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-12-7-7~12~14~19");
        drawNumberline(canvas, "7~12~14~19", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20885  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 12/7 - 7~12~16~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{12}{7} \)?</p>
    <canvas id="canvas-12-7-7~12~16~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-12-7-7~12~16~20");
        drawNumberline(canvas, "7~12~16~20", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20929  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 12/7 - 8~11~12~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{12}{7} \)?</p>
    <canvas id="canvas-12-7-8~11~12~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-12-7-8~11~12~16");
        drawNumberline(canvas, "8~11~12~16", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21063  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 12/8 - 12~15~17~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{12}{8} \)?</p>
    <canvas id="canvas-12-8-12~15~17~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-12-8-12~15~17~22");
        drawNumberline(canvas, "12~15~17~22", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21061  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 12/8 - 12~17~21~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{12}{8} \)?</p>
    <canvas id="canvas-12-8-12~17~21~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-12-8-12~17~21~26");
        drawNumberline(canvas, "12~17~21~26", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20935  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 12/8 - 9~12~17~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{12}{8} \)?</p>
    <canvas id="canvas-12-8-9~12~17~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-12-8-9~12~17~18");
        drawNumberline(canvas, "9~12~17~18", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21065  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/2 - 12~13~18~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{2} \)?</p>
    <canvas id="canvas-13-2-12~13~18~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-2-12~13~18~23");
        drawNumberline(canvas, "12~13~18~23", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21085  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/2 - 13~14~19~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{2} \)?</p>
    <canvas id="canvas-13-2-13~14~19~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-2-13~14~19~20");
        drawNumberline(canvas, "13~14~19~20", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20637  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/3 - 1~4~8~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{3} \)?</p>
    <canvas id="canvas-13-3-1~4~8~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-3-1~4~8~13");
        drawNumberline(canvas, "1~4~8~13", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20917  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/3 - 8~9~13~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{3} \)?</p>
    <canvas id="canvas-13-3-8~9~13~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-3-8~9~13~14");
        drawNumberline(canvas, "8~9~13~14", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20943  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/3 - 9~13~14~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{3} \)?</p>
    <canvas id="canvas-13-3-9~13~14~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-3-9~13~14~16");
        drawNumberline(canvas, "9~13~14~16", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21029  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/4 - 11~13~17~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{4} \)?</p>
    <canvas id="canvas-13-4-11~13~17~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-4-11~13~17~20");
        drawNumberline(canvas, "11~13~17~20", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21095  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/4 - 13~16~20~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{4} \)?</p>
    <canvas id="canvas-13-4-13~16~20~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-4-13~16~20~23");
        drawNumberline(canvas, "13~16~20~23", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21097  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/4 - 13~18~23~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{4} \)?</p>
    <canvas id="canvas-13-4-13~18~23~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-4-13~18~23~26");
        drawNumberline(canvas, "13~18~23~26", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20681  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/4 - 2~7~12~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{4} \)?</p>
    <canvas id="canvas-13-4-2~7~12~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-4-2~7~12~13");
        drawNumberline(canvas, "2~7~12~13", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20959  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/4 - 9~13~16~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{4} \)?</p>
    <canvas id="canvas-13-4-9~13~16~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-4-9~13~16~21");
        drawNumberline(canvas, "9~13~16~21", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21103  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/5 - 13~15~17~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{5} \)?</p>
    <canvas id="canvas-13-5-13~15~17~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-5-13~15~17~19");
        drawNumberline(canvas, "13~15~17~19", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20881  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/5 - 7~8~13~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{5} \)?</p>
    <canvas id="canvas-13-5-7~8~13~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-5-7~8~13~14");
        drawNumberline(canvas, "7~8~13~14", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20961  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/5 - 9~12~13~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{5} \)?</p>
    <canvas id="canvas-13-5-9~12~13~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-5-9~12~13~15");
        drawNumberline(canvas, "9~12~13~15", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20963  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/5 - 9~13~14~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{5} \)?</p>
    <canvas id="canvas-13-5-9~13~14~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-5-9~13~14~19");
        drawNumberline(canvas, "9~13~14~19", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20761  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/6 - 4~9~12~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{6} \)?</p>
    <canvas id="canvas-13-6-4~9~12~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-6-4~9~12~13");
        drawNumberline(canvas, "4~9~12~13", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20799  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/6 - 5~9~13~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{6} \)?</p>
    <canvas id="canvas-13-6-5~9~13~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-6-5~9~13~18");
        drawNumberline(canvas, "5~9~13~18", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20841  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/6 - 6~9~13~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{6} \)?</p>
    <canvas id="canvas-13-6-6~9~13~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-6-6~9~13~16");
        drawNumberline(canvas, "6~9~13~16", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20971  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/6 - 9~13~15~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{6} \)?</p>
    <canvas id="canvas-13-6-9~13~15~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-6-9~13~15~18");
        drawNumberline(canvas, "9~13~15~18", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20723  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/7 - 3~8~12~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{7} \)?</p>
    <canvas id="canvas-13-7-3~8~12~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-7-3~8~12~13");
        drawNumberline(canvas, "3~8~12~13", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20767  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/7 - 4~9~13~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{7} \)?</p>
    <canvas id="canvas-13-7-4~9~13~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-7-4~9~13~17");
        drawNumberline(canvas, "4~9~13~17", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20815  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/8 - 5~8~13~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{8} \)?</p>
    <canvas id="canvas-13-8-5~8~13~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-8-5~8~13~15");
        drawNumberline(canvas, "5~8~13~15", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20811  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/8 - 5~9~11~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{8} \)?</p>
    <canvas id="canvas-13-8-5~9~11~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-8-5~9~11~13");
        drawNumberline(canvas, "5~9~11~13", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20985  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 13/8 - 9~10~13~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{13}{8} \)?</p>
    <canvas id="canvas-13-8-9~10~13~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-13-8-9~10~13~18");
        drawNumberline(canvas, "9~10~13~18", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21127  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/3 - 14~15~20~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{3} \)?</p>
    <canvas id="canvas-14-3-14~15~20~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-3-14~15~20~24");
        drawNumberline(canvas, "14~15~20~24", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21125  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/3 - 14~17~18~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{3} \)?</p>
    <canvas id="canvas-14-3-14~17~18~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-3-14~17~18~22");
        drawNumberline(canvas, "14~17~18~22", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20745  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/3 - 4~9~14~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{3} \)?</p>
    <canvas id="canvas-14-3-4~9~14~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-3-4~9~14~16");
        drawNumberline(canvas, "4~9~14~16", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21017  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/4 - 11~14~18~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{4} \)?</p>
    <canvas id="canvas-14-4-11~14~18~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-4-11~14~18~19");
        drawNumberline(canvas, "11~14~18~19", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20775  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/4 - 5~7~9~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{4} \)?</p>
    <canvas id="canvas-14-4-5~7~9~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-4-5~7~9~14");
        drawNumberline(canvas, "5~7~9~14", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20817  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/4 - 6~11~14~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{4} \)?</p>
    <canvas id="canvas-14-4-6~11~14~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-4-6~11~14~16");
        drawNumberline(canvas, "6~11~14~16", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20859  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/4 - 7~12~14~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{4} \)?</p>
    <canvas id="canvas-14-4-7~12~14~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-4-7~12~14~16");
        drawNumberline(canvas, "7~12~14~16", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21123  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/6 - 14~19~23~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{6} \)?</p>
    <canvas id="canvas-14-6-14~19~23~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-6-14~19~23~24");
        drawNumberline(canvas, "14~19~23~24", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21129  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/8 - 14~17~18~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{8} \)?</p>
    <canvas id="canvas-14-8-14~17~18~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-8-14~17~18~20");
        drawNumberline(canvas, "14~17~18~20", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20835  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/8 - 6~9~13~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{8} \)?</p>
    <canvas id="canvas-14-8-6~9~13~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-8-6~9~13~14");
        drawNumberline(canvas, "6~9~13~14", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20873  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 14/8 - 7~12~14~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{14}{8} \)?</p>
    <canvas id="canvas-14-8-7~12~14~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-14-8-7~12~14~18");
        drawNumberline(canvas, "7~12~14~18", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20641  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 1/5 - 1~3~8~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{1}{5} \)?</p>
    <canvas id="canvas-1-5-1~3~8~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-1-5-1~3~8~10");
        drawNumberline(canvas, "1~3~8~10", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21163  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/2 - 15~20~22~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{2} \)?</p>
    <canvas id="canvas-15-2-15~20~22~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-2-15~20~22~25");
        drawNumberline(canvas, "15~20~22~25", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20821  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/2 - 6~11~15~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{2} \)?</p>
    <canvas id="canvas-15-2-6~11~15~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-2-6~11~15~16");
        drawNumberline(canvas, "6~11~15~16", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20863  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/2 - 7~11~12~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{2} \)?</p>
    <canvas id="canvas-15-2-7~11~12~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-2-7~11~12~15");
        drawNumberline(canvas, "7~11~12~15", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20933  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/2 - 9~11~12~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{2} \)?</p>
    <canvas id="canvas-15-2-9~11~12~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-2-9~11~12~15");
        drawNumberline(canvas, "9~11~12~15", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21077  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/4 - 12~13~15~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{4} \)?</p>
    <canvas id="canvas-15-4-12~13~15~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-4-12~13~15~17");
        drawNumberline(canvas, "12~13~15~17", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21073  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/4 - 12~15~16~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{4} \)?</p>
    <canvas id="canvas-15-4-12~15~16~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-4-12~15~16~17");
        drawNumberline(canvas, "12~15~16~17", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21175  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/4 - 15~18~23~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{4} \)?</p>
    <canvas id="canvas-15-4-15~18~23~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-4-15~18~23~27");
        drawNumberline(canvas, "15~18~23~27", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20923  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/4 - 8~9~13~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{4} \)?</p>
    <canvas id="canvas-15-4-8~9~13~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-4-8~9~13~15");
        drawNumberline(canvas, "8~9~13~15", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20987  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/6 - 10~12~15~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{6} \)?</p>
    <canvas id="canvas-15-6-10~12~15~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-6-10~12~15~18");
        drawNumberline(canvas, "10~12~15~18", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21023  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/6 - 11~15~17~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{6} \)?</p>
    <canvas id="canvas-15-6-11~15~17~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-6-11~15~17~22");
        drawNumberline(canvas, "11~15~17~22", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21165  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/6 - 15~20~24~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{6} \)?</p>
    <canvas id="canvas-15-6-15~20~24~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-6-15~20~24~26");
        drawNumberline(canvas, "15~20~24~26", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20623  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/6 - 1~6~10~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{6} \)?</p>
    <canvas id="canvas-15-6-1~6~10~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-6-1~6~10~15");
        drawNumberline(canvas, "1~6~10~15", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21195  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/7 - 15~18~19~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{7} \)?</p>
    <canvas id="canvas-15-7-15~18~19~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-7-15~18~19~23");
        drawNumberline(canvas, "15~18~19~23", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20651  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/7 - 1~6~10~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{7} \)?</p>
    <canvas id="canvas-15-7-1~6~10~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-7-1~6~10~15");
        drawNumberline(canvas, "1~6~10~15", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20807  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/7 - 5~9~12~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{7} \)?</p>
    <canvas id="canvas-15-7-5~9~12~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-7-5~9~12~15");
        drawNumberline(canvas, "5~9~12~15", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20891  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/7 - 7~9~12~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{7} \)?</p>
    <canvas id="canvas-15-7-7~9~12~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-7-7~9~12~15");
        drawNumberline(canvas, "7~9~12~15", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21197  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 15/8 - 15~18~22~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{15}{8} \)?</p>
    <canvas id="canvas-15-8-15~18~22~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-15-8-15~18~22~25");
        drawNumberline(canvas, "15~18~22~25", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20647  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 1/6 - 1~3~4~9</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{1}{6} \)?</p>
    <canvas id="canvas-1-6-1~3~4~9" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-1-6-1~3~4~9");
        drawNumberline(canvas, "1~3~4~9", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20643  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 1/6 - 1~6~7~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{1}{6} \)?</p>
    <canvas id="canvas-1-6-1~6~7~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-1-6-1~6~7~12");
        drawNumberline(canvas, "1~6~7~12", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21027  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/3 - 11~16~19~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{3} \)?</p>
    <canvas id="canvas-16-3-11~16~19~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-3-11~16~19~24");
        drawNumberline(canvas, "11~16~19~24", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21067  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/3 - 12~13~16~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{3} \)?</p>
    <canvas id="canvas-16-3-12~13~16~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-3-12~13~16~17");
        drawNumberline(canvas, "12~13~16~17", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20915  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/3 - 8~12~16~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{3} \)?</p>
    <canvas id="canvas-16-3-8~12~16~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-3-8~12~16~17");
        drawNumberline(canvas, "8~12~16~17", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21033  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/5 - 11~16~21~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{5} \)?</p>
    <canvas id="canvas-16-5-11~16~21~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-5-11~16~21~24");
        drawNumberline(canvas, "11~16~21~24", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21099  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/5 - 13~16~18~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{5} \)?</p>
    <canvas id="canvas-16-5-13~16~18~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-5-13~16~18~21");
        drawNumberline(canvas, "13~16~18~21", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21141  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/5 - 14~15~16~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{5} \)?</p>
    <canvas id="canvas-16-5-14~15~16~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-5-14~15~16~20");
        drawNumberline(canvas, "14~15~16~20", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20969  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/5 - 9~10~11~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{5} \)?</p>
    <canvas id="canvas-16-5-9~10~11~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-5-9~10~11~16");
        drawNumberline(canvas, "9~10~11~16", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21121  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/6 - 14~16~17~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{6} \)?</p>
    <canvas id="canvas-16-6-14~16~17~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-6-14~16~17~20");
        drawNumberline(canvas, "14~16~17~20", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21205  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/6 - 16~18~19~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{6} \)?</p>
    <canvas id="canvas-16-6-16~18~19~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-6-16~18~19~22");
        drawNumberline(canvas, "16~18~19~22", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21203  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/6 - 16~18~22~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{6} \)?</p>
    <canvas id="canvas-16-6-16~18~22~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-6-16~18~22~27");
        drawNumberline(canvas, "16~18~22~27", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21207  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 16/6 - 16~19~20~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{16}{6} \)?</p>
    <canvas id="canvas-16-6-16~19~20~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-16-6-16~19~20~24");
        drawNumberline(canvas, "16~19~20~24", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20649  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 1/7 - 1~6~7~9</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{1}{7} \)?</p>
    <canvas id="canvas-1-7-1~6~7~9" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-1-7-1~6~7~9");
        drawNumberline(canvas, "1~6~7~9", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21057  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/2 - 12~13~17~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{2} \)?</p>
    <canvas id="canvas-17-2-12~13~17~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-2-12~13~17~18");
        drawNumberline(canvas, "12~13~17~18", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21055  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/2 - 12~14~16~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{2} \)?</p>
    <canvas id="canvas-17-2-12~14~16~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-2-12~14~16~17");
        drawNumberline(canvas, "12~14~16~17", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21089  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/2 - 13~17~19~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{2} \)?</p>
    <canvas id="canvas-17-2-13~17~19~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-2-13~17~19~23");
        drawNumberline(canvas, "13~17~19~23", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20865  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/2 - 7~12~17~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{2} \)?</p>
    <canvas id="canvas-17-2-7~12~17~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-2-7~12~17~22");
        drawNumberline(canvas, "7~12~17~22", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20905  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/2 - 8~13~14~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{2} \)?</p>
    <canvas id="canvas-17-2-8~13~14~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-2-8~13~14~17");
        drawNumberline(canvas, "8~13~14~17", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20937  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/2 - 9~12~15~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{2} \)?</p>
    <canvas id="canvas-17-2-9~12~15~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-2-9~12~15~17");
        drawNumberline(canvas, "9~12~15~17", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20993  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/3 - 10~13~17~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{3} \)?</p>
    <canvas id="canvas-17-3-10~13~17~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-3-10~13~17~20");
        drawNumberline(canvas, "10~13~17~20", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21227  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/3 - 17~22~24~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{3} \)?</p>
    <canvas id="canvas-17-3-17~22~24~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-3-17~22~24~26");
        drawNumberline(canvas, "17~22~24~26", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20831  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/3 - 6~8~12~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{3} \)?</p>
    <canvas id="canvas-17-3-6~8~12~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-3-6~8~12~17");
        drawNumberline(canvas, "6~8~12~17", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20869  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/3 - 7~11~14~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{3} \)?</p>
    <canvas id="canvas-17-3-7~11~14~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-3-7~11~14~17");
        drawNumberline(canvas, "7~11~14~17", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20911  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/3 - 8~12~17~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{3} \)?</p>
    <canvas id="canvas-17-3-8~12~17~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-3-8~12~17~18");
        drawNumberline(canvas, "8~12~17~18", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20999  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/4 - 10~13~17~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{4} \)?</p>
    <canvas id="canvas-17-4-10~13~17~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-4-10~13~17~21");
        drawNumberline(canvas, "10~13~17~21", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21233  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/4 - 17~21~22~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{4} \)?</p>
    <canvas id="canvas-17-4-17~21~22~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-4-17~21~22~25");
        drawNumberline(canvas, "17~21~22~25", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21239  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/4 - 17~22~24~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{4} \)?</p>
    <canvas id="canvas-17-4-17~22~24~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-4-17~22~24~27");
        drawNumberline(canvas, "17~22~24~27", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21005  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/5 - 10~15~16~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{5} \)?</p>
    <canvas id="canvas-17-5-10~15~16~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-5-10~15~16~17");
        drawNumberline(canvas, "10~15~16~17", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21219  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/5 - 16~17~20~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{5} \)?</p>
    <canvas id="canvas-17-5-16~17~20~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-5-16~17~20~24");
        drawNumberline(canvas, "16~17~20~24", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21247  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/5 - 17~18~23~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{5} \)?</p>
    <canvas id="canvas-17-5-17~18~23~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-5-17~18~23~24");
        drawNumberline(canvas, "17~18~23~24", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21111  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/6 - 13~17~22~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{6} \)?</p>
    <canvas id="canvas-17-6-13~17~22~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-6-13~17~22~26");
        drawNumberline(canvas, "13~17~22~26", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21145  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/6 - 14~17~21~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{6} \)?</p>
    <canvas id="canvas-17-6-14~17~21~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-6-14~17~21~25");
        drawNumberline(canvas, "14~17~21~25", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21253  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/6 - 17~18~22~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{6} \)?</p>
    <canvas id="canvas-17-6-17~18~22~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-6-17~18~22~25");
        drawNumberline(canvas, "17~18~22~25", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21255  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/6 - 17~20~21~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{6} \)?</p>
    <canvas id="canvas-17-6-17~20~21~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-6-17~20~21~25");
        drawNumberline(canvas, "17~20~21~25", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21249  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/6 - 17~21~25~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{6} \)?</p>
    <canvas id="canvas-17-6-17~21~25~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-6-17~21~25~28");
        drawNumberline(canvas, "17~21~25~28", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20845  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/6 - 6~8~13~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{6} \)?</p>
    <canvas id="canvas-17-6-6~8~13~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-6-6~8~13~17");
        drawNumberline(canvas, "6~8~13~17", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20973  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/6 - 9~11~14~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{6} \)?</p>
    <canvas id="canvas-17-6-9~11~14~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-6-9~11~14~17");
        drawNumberline(canvas, "9~11~14~17", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21189  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/7 - 15~17~18~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{7} \)?</p>
    <canvas id="canvas-17-7-15~17~18~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-7-15~17~18~21");
        drawNumberline(canvas, "15~17~18~21", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20977  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/7 - 9~13~17~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{7} \)?</p>
    <canvas id="canvas-17-7-9~13~17~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-7-9~13~17~20");
        drawNumberline(canvas, "9~13~17~20", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21083  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/8 - 12~17~21~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{8} \)?</p>
    <canvas id="canvas-17-8-12~17~21~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-8-12~17~21~23");
        drawNumberline(canvas, "12~17~21~23", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21155  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/8 - 14~17~19~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{8} \)?</p>
    <canvas id="canvas-17-8-14~17~19~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-8-14~17~19~21");
        drawNumberline(canvas, "14~17~19~21", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21225  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/8 - 16~17~18~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{8} \)?</p>
    <canvas id="canvas-17-8-16~17~18~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-8-16~17~18~21");
        drawNumberline(canvas, "16~17~18~21", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20901  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 17/8 - 7~9~12~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{17}{8} \)?</p>
    <canvas id="canvas-17-8-7~9~12~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-17-8-7~9~12~17");
        drawNumberline(canvas, "7~9~12~17", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21053  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/4 - 12~14~18~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{4} \)?</p>
    <canvas id="canvas-18-4-12~14~18~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-4-12~14~18~20");
        drawNumberline(canvas, "12~14~18~20", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21259  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/4 - 18~19~22~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{4} \)?</p>
    <canvas id="canvas-18-4-18~19~22~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-4-18~19~22~26");
        drawNumberline(canvas, "18~19~22~26", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21081  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/5 - 12~14~18~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{5} \)?</p>
    <canvas id="canvas-18-5-12~14~18~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-5-12~14~18~21");
        drawNumberline(canvas, "12~14~18~21", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21101  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/5 - 13~14~16~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{5} \)?</p>
    <canvas id="canvas-18-5-13~14~16~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-5-13~14~16~18");
        drawNumberline(canvas, "13~14~16~18", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21107  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/5 - 13~15~18~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{5} \)?</p>
    <canvas id="canvas-18-5-13~15~18~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-5-13~15~18~21");
        drawNumberline(canvas, "13~15~18~21", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21179  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/5 - 15~17~18~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{5} \)?</p>
    <canvas id="canvas-18-5-15~17~18~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-5-15~17~18~20");
        drawNumberline(canvas, "15~17~18~20", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21243  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/5 - 17~18~19~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{5} \)?</p>
    <canvas id="canvas-18-5-17~18~19~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-5-17~18~19~22");
        drawNumberline(canvas, "17~18~19~22", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21271  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/5 - 18~21~25~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{5} \)?</p>
    <canvas id="canvas-18-5-18~21~25~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-5-18~21~25~28");
        drawNumberline(canvas, "18~21~25~28", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20927  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/5 - 8~9~14~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{5} \)?</p>
    <canvas id="canvas-18-5-8~9~14~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-5-8~9~14~18");
        drawNumberline(canvas, "8~9~14~18", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21039  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/7 - 11~16~18~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{7} \)?</p>
    <canvas id="canvas-18-7-11~16~18~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-7-11~16~18~19");
        drawNumberline(canvas, "11~16~18~19", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21113  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/7 - 13~14~18~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{7} \)?</p>
    <canvas id="canvas-18-7-13~14~18~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-7-13~14~18~19");
        drawNumberline(canvas, "13~14~18~19", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21279  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/7 - 18~22~23~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{7} \)?</p>
    <canvas id="canvas-18-7-18~22~23~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-7-18~22~23~25");
        drawNumberline(canvas, "18~22~23~25", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20889  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/7 - 7~11~16~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{7} \)?</p>
    <canvas id="canvas-18-7-7~11~16~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-7-7~11~16~18");
        drawNumberline(canvas, "7~11~16~18", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20895  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/7 - 7~12~14~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{7} \)?</p>
    <canvas id="canvas-18-7-7~12~14~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-7-7~12~14~18");
        drawNumberline(canvas, "7~12~14~18", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20979  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/7 - 9~12~15~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{7} \)?</p>
    <canvas id="canvas-18-7-9~12~15~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-7-9~12~15~18");
        drawNumberline(canvas, "9~12~15~18", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21001  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/8 - 10~14~17~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{8} \)?</p>
    <canvas id="canvas-18-8-10~14~17~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-8-10~14~17~18");
        drawNumberline(canvas, "10~14~17~18", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21177  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 18/8 - 15~18~23~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{18}{8} \)?</p>
    <canvas id="canvas-18-8-15~18~23~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-18-8-15~18~23~24");
        drawNumberline(canvas, "15~18~23~24", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21059  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/2 - 12~16~17~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{2} \)?</p>
    <canvas id="canvas-19-2-12~16~17~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-2-12~16~17~19");
        drawNumberline(canvas, "12~16~17~19", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21087  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/2 - 13~14~19~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{2} \)?</p>
    <canvas id="canvas-19-2-13~14~19~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-2-13~14~19~22");
        drawNumberline(canvas, "13~14~19~22", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21025  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/3 - 11~15~19~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{3} \)?</p>
    <canvas id="canvas-19-3-11~15~19~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-3-11~15~19~22");
        drawNumberline(canvas, "11~15~19~22", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20949  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/3 - 9~12~16~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{3} \)?</p>
    <canvas id="canvas-19-3-9~12~16~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-3-9~12~16~19");
        drawNumberline(canvas, "9~12~16~19", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21003  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/4 - 10~13~17~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{4} \)?</p>
    <canvas id="canvas-19-4-10~13~17~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-4-10~13~17~19");
        drawNumberline(canvas, "10~13~17~19", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21135  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/4 - 14~19~24~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{4} \)?</p>
    <canvas id="canvas-19-4-14~19~24~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-4-14~19~24~25");
        drawNumberline(canvas, "14~19~24~25", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21209  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/4 - 16~19~24~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{4} \)?</p>
    <canvas id="canvas-19-4-16~19~24~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-4-16~19~24~27");
        drawNumberline(canvas, "16~19~24~27", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21139  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/5 - 14~15~17~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{5} \)?</p>
    <canvas id="canvas-19-5-14~15~17~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-5-14~15~17~19");
        drawNumberline(canvas, "14~15~17~19", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21181  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/5 - 15~19~20~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{5} \)?</p>
    <canvas id="canvas-19-5-15~19~20~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-5-15~19~20~22");
        drawNumberline(canvas, "15~19~20~22", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21245  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/5 - 17~18~19~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{5} \)?</p>
    <canvas id="canvas-19-5-17~18~19~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-5-17~18~19~24");
        drawNumberline(canvas, "17~18~19~24", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21241  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/5 - 17~19~23~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{5} \)?</p>
    <canvas id="canvas-19-5-17~19~23~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-5-17~19~23~28");
        drawNumberline(canvas, "17~19~23~28", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21273  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/5 - 18~19~23~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{5} \)?</p>
    <canvas id="canvas-19-5-18~19~23~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-5-18~19~23~25");
        drawNumberline(canvas, "18~19~23~25", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21267  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/5 - 18~19~24~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{5} \)?</p>
    <canvas id="canvas-19-5-18~19~24~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-5-18~19~24~27");
        drawNumberline(canvas, "18~19~24~27", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20925  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/5 - 8~12~14~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{5} \)?</p>
    <canvas id="canvas-19-5-8~12~14~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-5-8~12~14~19");
        drawNumberline(canvas, "8~12~14~19", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21037  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/6 - 11~15~19~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{6} \)?</p>
    <canvas id="canvas-19-6-11~15~19~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-6-11~15~19~22");
        drawNumberline(canvas, "11~15~19~22", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21109  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/6 - 13~15~19~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{6} \)?</p>
    <canvas id="canvas-19-6-13~15~19~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-6-13~15~19~21");
        drawNumberline(canvas, "13~15~19~21", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21147  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/6 - 14~19~22~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{6} \)?</p>
    <canvas id="canvas-19-6-14~19~22~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-6-14~19~22~24");
        drawNumberline(canvas, "14~19~22~24", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21183  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/6 - 15~19~23~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{6} \)?</p>
    <canvas id="canvas-19-6-15~19~23~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-6-15~19~23~27");
        drawNumberline(canvas, "15~19~23~27", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21297  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/6 - 19~23~24~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{6} \)?</p>
    <canvas id="canvas-19-6-19~23~24~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-6-19~23~24~25");
        drawNumberline(canvas, "19~23~24~25", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21295  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/6 - 19~24~29~32</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{6} \)?</p>
    <canvas id="canvas-19-6-19~24~29~32" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-6-19~24~29~32");
        drawNumberline(canvas, "19~24~29~32", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21299  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/7 - 19~20~24~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{7} \)?</p>
    <canvas id="canvas-19-7-19~20~24~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-7-19~20~24~25");
        drawNumberline(canvas, "19~20~24~25", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20981  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/7 - 9~13~17~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{7} \)?</p>
    <canvas id="canvas-19-7-9~13~17~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-7-9~13~17~19");
        drawNumberline(canvas, "9~13~17~19", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21015  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/8 - 10~15~19~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{8} \)?</p>
    <canvas id="canvas-19-8-10~15~19~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-8-10~15~19~21");
        drawNumberline(canvas, "10~15~19~21", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21047  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/8 - 11~14~15~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{8} \)?</p>
    <canvas id="canvas-19-8-11~14~15~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-8-11~14~15~19");
        drawNumberline(canvas, "11~14~15~19", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21157  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/8 - 14~19~20~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{8} \)?</p>
    <canvas id="canvas-19-8-14~19~20~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-8-14~19~20~24");
        drawNumberline(canvas, "14~19~20~24", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21301  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 19/8 - 19~24~28~33</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{19}{8} \)?</p>
    <canvas id="canvas-19-8-19~24~28~33" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-19-8-19~24~28~33");
        drawNumberline(canvas, "19~24~28~33", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21069  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/3 - 12~17~20~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{3} \)?</p>
    <canvas id="canvas-20-3-12~17~20~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-3-12~17~20~21");
        drawNumberline(canvas, "12~17~20~21", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21171  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/3 - 15~20~25~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{3} \)?</p>
    <canvas id="canvas-20-3-15~20~25~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-3-15~20~25~28");
        drawNumberline(canvas, "15~20~25~28", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20945  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/3 - 9~14~15~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{3} \)?</p>
    <canvas id="canvas-20-3-9~14~15~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-3-9~14~15~20");
        drawNumberline(canvas, "9~14~15~20", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21093  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/6 - 13~16~20~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{6} \)?</p>
    <canvas id="canvas-20-6-13~16~20~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-6-13~16~20~23");
        drawNumberline(canvas, "13~16~20~23", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21091  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/6 - 13~18~20~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{6} \)?</p>
    <canvas id="canvas-20-6-13~18~20~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-6-13~18~20~22");
        drawNumberline(canvas, "13~18~20~22", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21169  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/6 - 15~16~18~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{6} \)?</p>
    <canvas id="canvas-20-6-15~16~18~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-6-15~16~18~20");
        drawNumberline(canvas, "15~16~18~20", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21309  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/6 - 20~25~30~32</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{6} \)?</p>
    <canvas id="canvas-20-6-20~25~30~32" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-6-20~25~30~32");
        drawNumberline(canvas, "20~25~30~32", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21011  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/7 - 10~13~18~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{7} \)?</p>
    <canvas id="canvas-20-7-10~13~18~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-7-10~13~18~20");
        drawNumberline(canvas, "10~13~18~20", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21149  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/7 - 14~16~20~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{7} \)?</p>
    <canvas id="canvas-20-7-14~16~20~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-7-14~16~20~21");
        drawNumberline(canvas, "14~16~20~21", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21193  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/7 - 15~17~20~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{7} \)?</p>
    <canvas id="canvas-20-7-15~17~20~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-7-15~17~20~22");
        drawNumberline(canvas, "15~17~20~22", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21323  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/7 - 20~21~22~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{7} \)?</p>
    <canvas id="canvas-20-7-20~21~22~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-7-20~21~22~25");
        drawNumberline(canvas, "20~21~22~25", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21159  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/8 - 15~20~21~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{8} \)?</p>
    <canvas id="canvas-20-8-15~20~21~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-8-15~20~21~23");
        drawNumberline(canvas, "15~20~21~23", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21167  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/8 - 15~20~22~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{8} \)?</p>
    <canvas id="canvas-20-8-15~20~22~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-8-15~20~22~26");
        drawNumberline(canvas, "15~20~22~26", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21199  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 20/8 - 16~18~20~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{20}{8} \)?</p>
    <canvas id="canvas-20-8-16~18~20~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-20-8-16~18~20~23");
        drawNumberline(canvas, "16~18~20~23", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21021  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/2 - 11~15~18~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{2} \)?</p>
    <canvas id="canvas-21-2-11~15~18~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-2-11~15~18~21");
        drawNumberline(canvas, "11~15~18~21", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21117  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/2 - 14~16~17~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{2} \)?</p>
    <canvas id="canvas-21-2-14~16~17~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-2-14~16~17~21");
        drawNumberline(canvas, "14~16~17~21", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21161  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/2 - 15~16~21~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{2} \)?</p>
    <canvas id="canvas-21-2-15~16~21~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-2-15~16~21~25");
        drawNumberline(canvas, "15~16~21~25", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21305  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/2 - 20~21~22~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{2} \)?</p>
    <canvas id="canvas-21-2-20~21~22~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-2-20~21~22~24");
        drawNumberline(canvas, "20~21~22~24", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21341  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/2 - 21~23~28~31</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{2} \)?</p>
    <canvas id="canvas-21-2-21~23~28~31" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-2-21~23~28~31");
        drawNumberline(canvas, "21~23~28~31", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21343  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/2 - 21~24~26~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{2} \)?</p>
    <canvas id="canvas-21-2-21~24~26~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-2-21~24~26~28");
        drawNumberline(canvas, "21~24~26~28", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21331  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/2 - 21~25~29~34</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{2} \)?</p>
    <canvas id="canvas-21-2-21~25~29~34" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-2-21~25~29~34");
        drawNumberline(canvas, "21~25~29~34", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21337  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/2 - 21~25~30~33</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{2} \)?</p>
    <canvas id="canvas-21-2-21~25~30~33" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-2-21~25~30~33");
        drawNumberline(canvas, "21~25~30~33", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21075  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/4 - 12~17~21~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{4} \)?</p>
    <canvas id="canvas-21-4-12~17~21~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-4-12~17~21~23");
        drawNumberline(canvas, "12~17~21~23", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21133  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/4 - 14~17~21~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{4} \)?</p>
    <canvas id="canvas-21-4-14~17~21~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-4-14~17~21~23");
        drawNumberline(canvas, "14~17~21~23", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21211  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/4 - 16~21~23~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{4} \)?</p>
    <canvas id="canvas-21-4-16~21~23~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-4-16~21~23~28");
        drawNumberline(canvas, "16~21~23~28", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21235  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/4 - 17~19~21~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{4} \)?</p>
    <canvas id="canvas-21-4-17~19~21~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-4-17~19~21~25");
        drawNumberline(canvas, "17~19~21~25", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21261  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/4 - 18~21~25~29</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{4} \)?</p>
    <canvas id="canvas-21-4-18~21~25~29" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-4-18~21~25~29");
        drawNumberline(canvas, "18~21~25~29", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21031  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/5 - 11~16~21~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{5} \)?</p>
    <canvas id="canvas-21-5-11~16~21~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-5-11~16~21~22");
        drawNumberline(canvas, "11~16~21~22", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21143  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/5 - 14~19~21~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{5} \)?</p>
    <canvas id="canvas-21-5-14~19~21~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-5-14~19~21~24");
        drawNumberline(canvas, "14~19~21~24", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21213  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/5 - 16~21~22~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{5} \)?</p>
    <canvas id="canvas-21-5-16~21~22~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-5-16~21~22~25");
        drawNumberline(canvas, "16~21~22~25", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21293  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/5 - 19~21~22~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{5} \)?</p>
    <canvas id="canvas-21-5-19~21~22~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-5-19~21~22~23");
        drawNumberline(canvas, "19~21~22~23", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21313  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/5 - 20~21~26~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{5} \)?</p>
    <canvas id="canvas-21-5-20~21~26~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-5-20~21~26~28");
        drawNumberline(canvas, "20~21~26~28", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21327  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/6 - 21~24~25~30</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{6} \)?</p>
    <canvas id="canvas-21-6-21~24~25~30" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-6-21~24~25~30");
        drawNumberline(canvas, "21~24~25~30", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21333  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/6 - 21~24~27~32</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{6} \)?</p>
    <canvas id="canvas-21-6-21~24~27~32" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-6-21~24~27~32");
        drawNumberline(canvas, "21~24~27~32", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21335  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/6 - 21~25~28~33</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{6} \)?</p>
    <canvas id="canvas-21-6-21~25~28~33" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-6-21~25~28~33");
        drawNumberline(canvas, "21~25~28~33", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21049  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/8 - 11~14~18~21</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{8} \)?</p>
    <canvas id="canvas-21-8-11~14~18~21" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-8-11~14~18~21");
        drawNumberline(canvas, "11~14~18~21", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21281  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/8 - 18~19~21~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{8} \)?</p>
    <canvas id="canvas-21-8-18~19~21~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-8-18~19~21~25");
        drawNumberline(canvas, "18~19~21~25", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21285  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 21/8 - 18~21~26~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{21}{8} \)?</p>
    <canvas id="canvas-21-8-18~21~26~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-21-8-18~21~26~27");
        drawNumberline(canvas, "18~21~26~27", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21173  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/3 - 15~19~22~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{3} \)?</p>
    <canvas id="canvas-22-3-15~19~22~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-3-15~19~22~24");
        drawNumberline(canvas, "15~19~22~24", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21201  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/3 - 16~19~22~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{3} \)?</p>
    <canvas id="canvas-22-3-16~19~22~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-3-16~19~22~26");
        drawNumberline(canvas, "16~19~22~26", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21307  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/4 - 20~21~22~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{4} \)?</p>
    <canvas id="canvas-22-4-20~21~22~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-4-20~21~22~24");
        drawNumberline(canvas, "20~21~22~24", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21357  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/4 - 22~24~29~31</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{4} \)?</p>
    <canvas id="canvas-22-4-22~24~29~31" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-4-22~24~29~31");
        drawNumberline(canvas, "22~24~29~31", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21137  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/5 - 14~17~22~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{5} \)?</p>
    <canvas id="canvas-22-5-14~17~22~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-5-14~17~22~24");
        drawNumberline(canvas, "14~17~22~24", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21365  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/5 - 22~23~27~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{5} \)?</p>
    <canvas id="canvas-22-5-22~23~27~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-5-22~23~27~28");
        drawNumberline(canvas, "22~23~27~28", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21231  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/6 - 17~21~22~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{6} \)?</p>
    <canvas id="canvas-22-6-17~21~22~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-6-17~21~22~26");
        drawNumberline(canvas, "17~21~22~26", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21289  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/6 - 19~22~25~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{6} \)?</p>
    <canvas id="canvas-22-6-19~22~25~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-6-19~22~25~26");
        drawNumberline(canvas, "19~22~25~26", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21043  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/7 - 11~14~17~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{7} \)?</p>
    <canvas id="canvas-22-7-11~14~17~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-7-11~14~17~22");
        drawNumberline(canvas, "11~14~17~22", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21191  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/7 - 15~17~22~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{7} \)?</p>
    <canvas id="canvas-22-7-15~17~22~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-7-15~17~22~23");
        drawNumberline(canvas, "15~17~22~23", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21257  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/7 - 17~22~27~31</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{7} \)?</p>
    <canvas id="canvas-22-7-17~22~27~31" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-7-17~22~27~31");
        drawNumberline(canvas, "17~22~27~31", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21369  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/7 - 22~23~27~31</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{7} \)?</p>
    <canvas id="canvas-22-7-22~23~27~31" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-7-22~23~27~31");
        drawNumberline(canvas, "22~23~27~31", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20931  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/7 - 8~12~17~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{7} \)?</p>
    <canvas id="canvas-22-7-8~12~17~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-7-8~12~17~22");
        drawNumberline(canvas, "8~12~17~22", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21071  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 22/8 - 12~17~19~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{22}{8} \)?</p>
    <canvas id="canvas-22-8-12~17~19~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-22-8-12~17~19~22");
        drawNumberline(canvas, "12~17~19~22", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20605  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 2/3 - 0~2~7~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{2}{3} \)?</p>
    <canvas id="canvas-2-3-0~2~7~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-2-3-0~2~7~11");
        drawNumberline(canvas, "0~2~7~11", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20633  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 2/3 - 1~2~6~8</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{2}{3} \)?</p>
    <canvas id="canvas-2-3-1~2~6~8" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-2-3-1~2~6~8");
        drawNumberline(canvas, "1~2~6~8", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20989  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/2 - 10~15~18~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{2} \)?</p>
    <canvas id="canvas-23-2-10~15~18~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-2-10~15~18~23");
        drawNumberline(canvas, "10~15~18~23", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21115  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/2 - 14~17~20~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{2} \)?</p>
    <canvas id="canvas-23-2-14~17~20~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-2-14~17~20~23");
        drawNumberline(canvas, "14~17~20~23", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21373  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/2 - 23~26~29~32</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{2} \)?</p>
    <canvas id="canvas-23-2-23~26~29~32" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-2-23~26~29~32");
        drawNumberline(canvas, "23~26~29~32", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20667  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 2/3 - 2~4~5~6</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{2}{3} \)?</p>
    <canvas id="canvas-2-3-2~4~5~6" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-2-3-2~4~5~6");
        drawNumberline(canvas, "2~4~5~6", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21287  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/3 - 19~22~23~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{3} \)?</p>
    <canvas id="canvas-23-3-19~22~23~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-3-19~22~23~25");
        drawNumberline(canvas, "19~22~23~25", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20947  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/3 - 9~13~18~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{3} \)?</p>
    <canvas id="canvas-23-3-9~13~18~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-3-9~13~18~23");
        drawNumberline(canvas, "9~13~18~23", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21237  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/4 - 17~19~23~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{4} \)?</p>
    <canvas id="canvas-23-4-17~19~23~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-4-17~19~23~28");
        drawNumberline(canvas, "17~19~23~28", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21105  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/5 - 13~15~18~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{5} \)?</p>
    <canvas id="canvas-23-5-13~15~18~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-5-13~15~18~23");
        drawNumberline(canvas, "13~15~18~23", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21215  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/5 - 16~17~21~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{5} \)?</p>
    <canvas id="canvas-23-5-16~17~21~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-5-16~17~21~23");
        drawNumberline(canvas, "16~17~21~23", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21217  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/5 - 16~19~23~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{5} \)?</p>
    <canvas id="canvas-23-5-16~19~23~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-5-16~19~23~24");
        drawNumberline(canvas, "16~19~23~24", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21265  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/5 - 18~23~24~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{5} \)?</p>
    <canvas id="canvas-23-5-18~23~24~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-5-18~23~24~27");
        drawNumberline(canvas, "18~23~24~27", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21317  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/5 - 20~23~28~33</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{5} \)?</p>
    <canvas id="canvas-23-5-20~23~28~33" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-5-20~23~28~33");
        drawNumberline(canvas, "20~23~28~33", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21187  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/6 - 15~18~19~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{6} \)?</p>
    <canvas id="canvas-23-6-15~18~19~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-6-15~18~19~23");
        drawNumberline(canvas, "15~18~19~23", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21347  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/6 - 21~22~23~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{6} \)?</p>
    <canvas id="canvas-23-6-21~22~23~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-6-21~22~23~27");
        drawNumberline(canvas, "21~22~23~27", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21349  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/6 - 21~23~25~29</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{6} \)?</p>
    <canvas id="canvas-23-6-21~23~25~29" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-6-21~23~25~29");
        drawNumberline(canvas, "21~23~25~29", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21153  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/7 - 14~18~23~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{7} \)?</p>
    <canvas id="canvas-23-7-14~18~23~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-7-14~18~23~25");
        drawNumberline(canvas, "14~18~23~25", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21383  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/7 - 23~28~29~30</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{7} \)?</p>
    <canvas id="canvas-23-7-23~28~29~30" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-7-23~28~29~30");
        drawNumberline(canvas, "23~28~29~30", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21051  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/8 - 11~15~20~23</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{8} \)?</p>
    <canvas id="canvas-23-8-11~15~20~23" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-8-11~15~20~23");
        drawNumberline(canvas, "11~15~20~23", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21283  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/8 - 18~23~24~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{8} \)?</p>
    <canvas id="canvas-23-8-18~23~24~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-8-18~23~24~25");
        drawNumberline(canvas, "18~23~24~25", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21303  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/8 - 19~23~25~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{8} \)?</p>
    <canvas id="canvas-23-8-19~23~25~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-8-19~23~25~27");
        drawNumberline(canvas, "19~23~25~27", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21353  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/8 - 21~23~27~29</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{8} \)?</p>
    <canvas id="canvas-23-8-21~23~27~29" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-8-21~23~27~29");
        drawNumberline(canvas, "21~23~27~29", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21385  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 23/8 - 23~27~32~35</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{23}{8} \)?</p>
    <canvas id="canvas-23-8-23~27~32~35" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-23-8-23~27~32~35");
        drawNumberline(canvas, "23~27~32~35", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21079  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 24/5 - 12~15~20~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{24}{5} \)?</p>
    <canvas id="canvas-24-5-12~15~20~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-24-5-12~15~20~24");
        drawNumberline(canvas, "12~15~20~24", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21269  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 24/5 - 18~21~24~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{24}{5} \)?</p>
    <canvas id="canvas-24-5-18~21~24~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-24-5-18~21~24~28");
        drawNumberline(canvas, "18~21~24~28", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21393  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 24/5 - 24~26~27~31</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{24}{5} \)?</p>
    <canvas id="canvas-24-5-24~26~27~31" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-24-5-24~26~27~31");
        drawNumberline(canvas, "24~26~27~31", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21391  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 24/5 - 24~28~31~34</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{24}{5} \)?</p>
    <canvas id="canvas-24-5-24~28~31~34" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-24-5-24~28~31~34");
        drawNumberline(canvas, "24~28~31~34", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21151  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 24/7 - 14~19~21~24</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{24}{7} \)?</p>
    <canvas id="canvas-24-7-14~19~21~24" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-24-7-14~19~21~24");
        drawNumberline(canvas, "14~19~21~24", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21319  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 24/7 - 20~23~24~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{24}{7} \)?</p>
    <canvas id="canvas-24-7-20~23~24~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-24-7-20~23~24~28");
        drawNumberline(canvas, "20~23~24~28", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21351  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 24/7 - 21~24~28~30</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{24}{7} \)?</p>
    <canvas id="canvas-24-7-21~24~28~30" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-24-7-21~24~28~30");
        drawNumberline(canvas, "21~24~28~30", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21367  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 24/7 - 22~24~25~30</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{24}{7} \)?</p>
    <canvas id="canvas-24-7-22~24~25~30" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-24-7-22~24~25~30");
        drawNumberline(canvas, "22~24~25~30", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21119  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/3 - 14~16~21~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{3} \)?</p>
    <canvas id="canvas-25-3-14~16~21~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-3-14~16~21~25");
        drawNumberline(canvas, "14~16~21~25", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21229  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/3 - 17~21~22~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{3} \)?</p>
    <canvas id="canvas-25-3-17~21~22~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-3-17~21~22~25");
        drawNumberline(canvas, "17~21~22~25", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21375  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/3 - 23~25~29~30</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{3} \)?</p>
    <canvas id="canvas-25-3-23~25~29~30" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-3-23~25~29~30");
        drawNumberline(canvas, "23~25~29~30", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21185  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/6 - 15~16~21~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{6} \)?</p>
    <canvas id="canvas-25-6-15~16~21~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-6-15~16~21~25");
        drawNumberline(canvas, "15~16~21~25", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21221  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/6 - 16~18~22~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{6} \)?</p>
    <canvas id="canvas-25-6-16~18~22~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-6-16~18~22~25");
        drawNumberline(canvas, "16~18~22~25", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21251  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/6 - 17~19~24~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{6} \)?</p>
    <canvas id="canvas-25-6-17~19~24~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-6-17~19~24~25");
        drawNumberline(canvas, "17~19~24~25", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21275  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/6 - 18~19~23~25</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{6} \)?</p>
    <canvas id="canvas-25-6-18~19~23~25" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-6-18~19~23~25");
        drawNumberline(canvas, "18~19~23~25", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21395  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/6 - 24~25~28~31</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{6} \)?</p>
    <canvas id="canvas-25-6-24~25~28~31" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-6-24~25~28~31");
        drawNumberline(canvas, "24~25~28~31", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21277  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/7 - 18~23~25~30</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{7} \)?</p>
    <canvas id="canvas-25-7-18~23~25~30" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-7-18~23~25~30");
        drawNumberline(canvas, "18~23~25~30", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21401  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/7 - 25~28~33~36</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{7} \)?</p>
    <canvas id="canvas-25-7-25~28~33~36" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-7-25~28~33~36");
        drawNumberline(canvas, "25~28~33~36", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21405  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/8 - 25~26~31~32</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{8} \)?</p>
    <canvas id="canvas-25-8-25~26~31~32" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-8-25~26~31~32");
        drawNumberline(canvas, "25~26~31~32", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21409  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/8 - 25~27~30~34</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{8} \)?</p>
    <canvas id="canvas-25-8-25~27~30~34" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-8-25~27~30~34");
        drawNumberline(canvas, "25~27~30~34", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21407  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 25/8 - 25~30~35~39</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{25}{8} \)?</p>
    <canvas id="canvas-25-8-25~30~35~39" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-25-8-25~30~35~39");
        drawNumberline(canvas, "25~30~35~39", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21413  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/3 - 26~30~33~36</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{3} \)?</p>
    <canvas id="canvas-26-3-26~30~33~36" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-3-26~30~33~36");
        drawNumberline(canvas, "26~30~33~36", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21329  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/4 - 21~22~26~29</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{4} \)?</p>
    <canvas id="canvas-26-4-21~22~26~29" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-4-21~22~26~29");
        drawNumberline(canvas, "21~22~26~29", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21339  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/4 - 21~26~28~31</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{4} \)?</p>
    <canvas id="canvas-26-4-21~26~28~31" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-4-21~26~28~31");
        drawNumberline(canvas, "21~26~28~31", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21345  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/5 - 21~24~26~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{5} \)?</p>
    <canvas id="canvas-26-5-21~24~26~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-5-21~24~26~27");
        drawNumberline(canvas, "21~24~26~27", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21421  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/5 - 26~28~32~33</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{5} \)?</p>
    <canvas id="canvas-26-5-26~28~32~33" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-5-26~28~32~33");
        drawNumberline(canvas, "26~28~32~33", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21419  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/5 - 26~29~31~33</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{5} \)?</p>
    <canvas id="canvas-26-5-26~29~31~33" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-5-26~29~31~33");
        drawNumberline(canvas, "26~29~31~33", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21359  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/6 - 22~26~31~32</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{6} \)?</p>
    <canvas id="canvas-26-6-22~26~31~32" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-6-22~26~31~32");
        drawNumberline(canvas, "22~26~31~32", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21377  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/6 - 23~24~26~29</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{6} \)?</p>
    <canvas id="canvas-26-6-23~24~26~29" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-6-23~24~26~29");
        drawNumberline(canvas, "23~24~26~29", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21387  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/6 - 24~26~27~32</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{6} \)?</p>
    <canvas id="canvas-26-6-24~26~27~32" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-6-24~26~27~32");
        drawNumberline(canvas, "24~26~27~32", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21417  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/6 - 26~29~31~34</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{6} \)?</p>
    <canvas id="canvas-26-6-26~29~31~34" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-6-26~29~31~34");
        drawNumberline(canvas, "26~29~31~34", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21415  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/6 - 26~29~33~37</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{6} \)?</p>
    <canvas id="canvas-26-6-26~29~33~37" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-6-26~29~33~37");
        drawNumberline(canvas, "26~29~33~37", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21223  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/7 - 16~18~21~26</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{7} \)?</p>
    <canvas id="canvas-26-7-16~18~21~26" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-7-16~18~21~26");
        drawNumberline(canvas, "16~18~21~26", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21321  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/7 - 20~25~26~31</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{7} \)?</p>
    <canvas id="canvas-26-7-20~25~26~31" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-7-20~25~26~31");
        drawNumberline(canvas, "20~25~26~31", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21381  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/7 - 23~26~29~34</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{7} \)?</p>
    <canvas id="canvas-26-7-23~26~29~34" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-7-23~26~29~34");
        drawNumberline(canvas, "23~26~29~34", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21397  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/7 - 24~26~30~35</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{7} \)?</p>
    <canvas id="canvas-26-7-24~26~30~35" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-7-24~26~30~35");
        drawNumberline(canvas, "24~26~30~35", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21425  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/7 - 26~30~33~36</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{7} \)?</p>
    <canvas id="canvas-26-7-26~30~33~36" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-7-26~30~33~36");
        drawNumberline(canvas, "26~30~33~36", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21363  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/8 - 22~24~26~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{8} \)?</p>
    <canvas id="canvas-26-8-22~24~26~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-8-22~24~26~27");
        drawNumberline(canvas, "22~24~26~27", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21361  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 26/8 - 22~26~27~32</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{26}{8} \)?</p>
    <canvas id="canvas-26-8-22~26~27~32" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-26-8-22~26~27~32");
        drawNumberline(canvas, "22~26~27~32", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21355  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/2 - 22~24~27~28</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{2} \)?</p>
    <canvas id="canvas-27-2-22~24~27~28" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-2-22~24~27~28");
        drawNumberline(canvas, "22~24~27~28", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21131  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/4 - 14~17~22~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{4} \)?</p>
    <canvas id="canvas-27-4-14~17~22~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-4-14~17~22~27");
        drawNumberline(canvas, "14~17~22~27", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21263  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/4 - 18~21~23~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{4} \)?</p>
    <canvas id="canvas-27-4-18~21~23~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-4-18~21~23~27");
        drawNumberline(canvas, "18~21~23~27", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21311  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/4 - 20~24~26~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{4} \)?</p>
    <canvas id="canvas-27-4-20~24~26~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-4-20~24~26~27");
        drawNumberline(canvas, "20~24~26~27", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21389  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/4 - 24~27~28~33</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{4} \)?</p>
    <canvas id="canvas-27-4-24~27~28~33" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-4-24~27~28~33");
        drawNumberline(canvas, "24~27~28~33", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21291  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/5 - 19~24~27~29</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{5} \)?</p>
    <canvas id="canvas-27-5-19~24~27~29" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-5-19~24~27~29");
        drawNumberline(canvas, "19~24~27~29", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21315  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/5 - 20~22~27~30</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{5} \)?</p>
    <canvas id="canvas-27-5-20~22~27~30" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-5-20~22~27~30");
        drawNumberline(canvas, "20~22~27~30", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21429  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/5 - 27~29~32~34</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{5} \)?</p>
    <canvas id="canvas-27-5-27~29~32~34" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-5-27~29~32~34");
        drawNumberline(canvas, "27~29~32~34", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21371  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/6 - 23~27~31~35</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{6} \)?</p>
    <canvas id="canvas-27-6-23~27~31~35" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-6-23~27~31~35");
        drawNumberline(canvas, "23~27~31~35", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21427  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/6 - 27~31~32~33</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{6} \)?</p>
    <canvas id="canvas-27-6-27~31~32~33" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-6-27~31~32~33");
        drawNumberline(canvas, "27~31~32~33", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21325  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/7 - 20~25~27~32</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{7} \)?</p>
    <canvas id="canvas-27-7-20~25~27~32" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-7-20~25~27~32");
        drawNumberline(canvas, "20~25~27~32", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21379  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/7 - 23~24~25~27</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{7} \)?</p>
    <canvas id="canvas-27-7-23~24~25~27" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-7-23~24~25~27");
        drawNumberline(canvas, "23~24~25~27", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21403  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/7 - 25~27~31~32</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{7} \)?</p>
    <canvas id="canvas-27-7-25~27~31~32" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-7-25~27~31~32");
        drawNumberline(canvas, "25~27~31~32", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21423  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/7 - 26~27~29~31</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{7} \)?</p>
    <canvas id="canvas-27-7-26~27~29~31" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-7-26~27~29~31");
        drawNumberline(canvas, "26~27~29~31", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21399  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/8 - 24~27~32~36</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{8} \)?</p>
    <canvas id="canvas-27-8-24~27~32~36" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-8-24~27~32~36");
        drawNumberline(canvas, "24~27~32~36", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21411  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/8 - 25~27~30~34</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{8} \)?</p>
    <canvas id="canvas-27-8-25~27~30~34" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-8-25~27~30~34");
        drawNumberline(canvas, "25~27~30~34", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 21431  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 27/8 - 27~28~31~35</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{27}{8} \)?</p>
    <canvas id="canvas-27-8-27~28~31~35" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-27-8-27~28~31~35");
        drawNumberline(canvas, "27~28~31~35", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20675  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 2/8 - 2~3~6~9</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{2}{8} \)?</p>
    <canvas id="canvas-2-8-2~3~6~9" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-2-8-2~3~6~9");
        drawNumberline(canvas, "2~3~6~9", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20671  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 2/8 - 2~4~6~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{2}{8} \)?</p>
    <canvas id="canvas-2-8-2~4~6~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-2-8-2~4~6~11");
        drawNumberline(canvas, "2~4~6~11", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20695  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/2 - 3~5~7~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{2} \)?</p>
    <canvas id="canvas-3-2-3~5~7~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-2-3~5~7~10");
        drawNumberline(canvas, "3~5~7~10", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20673  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/4 - 2~3~8~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{4} \)?</p>
    <canvas id="canvas-3-4-2~3~8~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-4-2~3~8~12");
        drawNumberline(canvas, "2~3~8~12", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20707  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/4 - 3~7~10~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{4} \)?</p>
    <canvas id="canvas-3-4-3~7~10~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-4-3~7~10~14");
        drawNumberline(canvas, "3~7~10~14", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20717  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/5 - 3~6~7~8</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{5} \)?</p>
    <canvas id="canvas-3-5-3~6~7~8" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-5-3~6~7~8");
        drawNumberline(canvas, "3~6~7~8", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20715  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/5 - 3~7~10~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{5} \)?</p>
    <canvas id="canvas-3-5-3~7~10~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-5-3~7~10~12");
        drawNumberline(canvas, "3~7~10~12", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20719  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/5 - 3~7~11~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{5} \)?</p>
    <canvas id="canvas-3-5-3~7~11~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-5-3~7~11~14");
        drawNumberline(canvas, "3~7~11~14", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20703  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/6 - 3~8~13~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{6} \)?</p>
    <canvas id="canvas-3-6-3~8~13~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-6-3~8~13~16");
        drawNumberline(canvas, "3~8~13~16", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20653  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/7 - 1~3~7~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{7} \)?</p>
    <canvas id="canvas-3-7-1~3~7~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-7-1~3~7~10");
        drawNumberline(canvas, "1~3~7~10", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20659  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/8 - 1~3~6~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{8} \)?</p>
    <canvas id="canvas-3-8-1~3~6~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-8-1~3~6~11");
        drawNumberline(canvas, "1~3~6~11", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20727  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/8 - 3~5~9~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{8} \)?</p>
    <canvas id="canvas-3-8-3~5~9~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-8-3~5~9~10");
        drawNumberline(canvas, "3~5~9~10", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20725  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/8 - 3~7~11~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{8} \)?</p>
    <canvas id="canvas-3-8-3~7~11~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-8-3~7~11~16");
        drawNumberline(canvas, "3~7~11~16", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20729  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 3/8 - 3~8~10~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{3}{8} \)?</p>
    <canvas id="canvas-3-8-3~8~10~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-3-8-3~8~10~11");
        drawNumberline(canvas, "3~8~10~11", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20603  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/3 - 0~4~7~8</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{3} \)?</p>
    <canvas id="canvas-4-3-0~4~7~8" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-3-0~4~7~8");
        drawNumberline(canvas, "0~4~7~8", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20635  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/3 - 1~2~3~4</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{3} \)?</p>
    <canvas id="canvas-4-3-1~2~3~4" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-3-1~2~3~4");
        drawNumberline(canvas, "1~2~3~4", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20669  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/3 - 2~4~6~7</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{3} \)?</p>
    <canvas id="canvas-4-3-2~4~6~7" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-3-2~4~6~7");
        drawNumberline(canvas, "2~4~6~7", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20743  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/3 - 4~7~12~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{3} \)?</p>
    <canvas id="canvas-4-3-4~7~12~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-3-4~7~12~14");
        drawNumberline(canvas, "4~7~12~14", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20683  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/5 - 2~3~4~9</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{5} \)?</p>
    <canvas id="canvas-4-5-2~3~4~9" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-5-2~3~4~9");
        drawNumberline(canvas, "2~3~4~9", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20747  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/6 - 4~5~10~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{6} \)?</p>
    <canvas id="canvas-4-6-4~5~10~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-6-4~5~10~12");
        drawNumberline(canvas, "4~5~10~12", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20741  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/6 - 4~5~8~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{6} \)?</p>
    <canvas id="canvas-4-6-4~5~8~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-6-4~5~8~12");
        drawNumberline(canvas, "4~5~8~12", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20749  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/6 - 4~7~8~9</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{6} \)?</p>
    <canvas id="canvas-4-6-4~7~8~9" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-6-4~7~8~9");
        drawNumberline(canvas, "4~7~8~9", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20615  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/7 - 0~1~4~8</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{7} \)?</p>
    <canvas id="canvas-4-7-0~1~4~8" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-7-0~1~4~8");
        drawNumberline(canvas, "0~1~4~8", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20619  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/7 - 0~4~6~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{7} \)?</p>
    <canvas id="canvas-4-7-0~4~6~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-7-0~4~6~11");
        drawNumberline(canvas, "0~4~6~11", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20765  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/7 - 4~5~9~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{7} \)?</p>
    <canvas id="canvas-4-7-4~5~9~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-7-4~5~9~11");
        drawNumberline(canvas, "4~5~9~11", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20769  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/7 - 4~8~10~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{7} \)?</p>
    <canvas id="canvas-4-7-4~8~10~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-7-4~8~10~15");
        drawNumberline(canvas, "4~8~10~15", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20597  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/8 - 0~1~4~5</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{8} \)?</p>
    <canvas id="canvas-4-8-0~1~4~5" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-8-0~1~4~5");
        drawNumberline(canvas, "0~1~4~5", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20737  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/8 - 4~5~9~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{8} \)?</p>
    <canvas id="canvas-4-8-4~5~9~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-8-4~5~9~11");
        drawNumberline(canvas, "4~5~9~11", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20739  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 4/8 - 4~9~14~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{4}{8} \)?</p>
    <canvas id="canvas-4-8-4~9~14~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-4-8-4~9~14~18");
        drawNumberline(canvas, "4~9~14~18", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20629  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/2 - 1~5~6~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{2} \)?</p>
    <canvas id="canvas-5-2-1~5~6~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-2-1~5~6~10");
        drawNumberline(canvas, "1~5~6~10", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20699  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/2 - 3~4~5~7</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{2} \)?</p>
    <canvas id="canvas-5-2-3~4~5~7" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-2-3~4~5~7");
        drawNumberline(canvas, "3~4~5~7", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20665  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/3 - 2~5~8~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{3} \)?</p>
    <canvas id="canvas-5-3-2~5~8~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-3-2~5~8~13");
        drawNumberline(canvas, "2~5~8~13", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20713  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/4 - 3~5~8~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{4} \)?</p>
    <canvas id="canvas-5-4-3~5~8~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-4-3~5~8~10");
        drawNumberline(canvas, "3~5~8~10", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20793  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/4 - 5~8~12~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{4} \)?</p>
    <canvas id="canvas-5-4-5~8~12~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-4-5~8~12~15");
        drawNumberline(canvas, "5~8~12~15", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20791  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/4 - 5~9~12~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{4} \)?</p>
    <canvas id="canvas-5-4-5~9~12~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-4-5~9~12~14");
        drawNumberline(canvas, "5~9~12~14", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20645  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/6 - 1~4~5~9</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{6} \)?</p>
    <canvas id="canvas-5-6-1~4~5~9" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-6-1~4~5~9");
        drawNumberline(canvas, "1~4~5~9", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20687  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/6 - 2~4~5~7</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{6} \)?</p>
    <canvas id="canvas-5-6-2~4~5~7" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-6-2~4~5~7");
        drawNumberline(canvas, "2~4~5~7", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20801  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/6 - 5~7~12~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{6} \)?</p>
    <canvas id="canvas-5-6-5~7~12~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-6-5~7~12~15");
        drawNumberline(canvas, "5~7~12~15", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20693  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/7 - 2~5~10~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{7} \)?</p>
    <canvas id="canvas-5-7-2~5~10~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-7-2~5~10~14");
        drawNumberline(canvas, "2~5~10~14", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20771  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/7 - 4~5~9~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{7} \)?</p>
    <canvas id="canvas-5-7-4~5~9~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-7-4~5~9~13");
        drawNumberline(canvas, "4~5~9~13", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20805  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/7 - 5~10~14~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{7} \)?</p>
    <canvas id="canvas-5-7-5~10~14~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-7-5~10~14~16");
        drawNumberline(canvas, "5~10~14~16", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20773  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/8 - 4~5~10~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{8} \)?</p>
    <canvas id="canvas-5-8-4~5~10~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-8-4~5~10~13");
        drawNumberline(canvas, "4~5~10~13", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20813  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 5/8 - 5~9~14~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{5}{8} \)?</p>
    <canvas id="canvas-5-8-5~9~14~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-5-8-5~9~14~19");
        drawNumberline(canvas, "5~9~14~19", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20621  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 6/4 - 1~2~6~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{6}{4} \)?</p>
    <canvas id="canvas-6-4-1~2~6~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-6-4-1~2~6~11");
        drawNumberline(canvas, "1~2~6~11", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20823  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 6/4 - 6~9~10~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{6}{4} \)?</p>
    <canvas id="canvas-6-4-6~9~10~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-6-4-6~9~10~12");
        drawNumberline(canvas, "6~9~10~12", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20609  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 6/5 - 0~1~5~6</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{6}{5} \)?</p>
    <canvas id="canvas-6-5-0~1~5~6" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-6-5-0~1~5~6");
        drawNumberline(canvas, "0~1~5~6", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20685  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 6/5 - 2~3~6~8</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{6}{5} \)?</p>
    <canvas id="canvas-6-5-2~3~6~8" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-6-5-2~3~6~8");
        drawNumberline(canvas, "2~3~6~8", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20837  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 6/5 - 6~7~8~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{6}{5} \)?</p>
    <canvas id="canvas-6-5-6~7~8~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-6-5-6~7~8~10");
        drawNumberline(canvas, "6~7~8~10", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20833  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 6/8 - 6~10~14~15</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{6}{8} \)?</p>
    <canvas id="canvas-6-8-6~10~14~15" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-6-8-6~10~14~15");
        drawNumberline(canvas, "6~10~14~15", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20661  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/2 - 2~3~5~7</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{2} \)?</p>
    <canvas id="canvas-7-2-2~3~5~7" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-2-2~3~5~7");
        drawNumberline(canvas, "2~3~5~7", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20701  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/2 - 3~4~7~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{2} \)?</p>
    <canvas id="canvas-7-2-3~4~7~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-2-3~4~7~12");
        drawNumberline(canvas, "3~4~7~12", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20735  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/2 - 4~7~9~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{2} \)?</p>
    <canvas id="canvas-7-2-4~7~9~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-2-4~7~9~13");
        drawNumberline(canvas, "4~7~9~13", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20857  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/2 - 7~12~16~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{2} \)?</p>
    <canvas id="canvas-7-2-7~12~16~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-2-7~12~16~18");
        drawNumberline(canvas, "7~12~16~18", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20783  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/3 - 5~7~8~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{3} \)?</p>
    <canvas id="canvas-7-3-5~7~8~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-3-5~7~8~12");
        drawNumberline(canvas, "5~7~8~12", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20679  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/4 - 2~7~10~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{4} \)?</p>
    <canvas id="canvas-7-4-2~7~10~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-4-2~7~10~14");
        drawNumberline(canvas, "2~7~10~14", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20711  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/4 - 3~4~5~7</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{4} \)?</p>
    <canvas id="canvas-7-4-3~4~5~7" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-4-3~4~5~7");
        drawNumberline(canvas, "3~4~5~7", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20709  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/4 - 3~7~9~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{4} \)?</p>
    <canvas id="canvas-7-4-3~7~9~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-4-3~7~9~11");
        drawNumberline(canvas, "3~7~9~11", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20877  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/4 - 7~8~10~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{4} \)?</p>
    <canvas id="canvas-7-4-7~8~10~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-4-7~8~10~14");
        drawNumberline(canvas, "7~8~10~14", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20689  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/6 - 2~5~7~12</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{6} \)?</p>
    <canvas id="canvas-7-6-2~5~7~12" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-6-2~5~7~12");
        drawNumberline(canvas, "2~5~7~12", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20721  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/6 - 3~7~10~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{6} \)?</p>
    <canvas id="canvas-7-6-3~7~10~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-6-3~7~10~14");
        drawNumberline(canvas, "3~7~10~14", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20733  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/8 - 3~4~5~7</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{8} \)?</p>
    <canvas id="canvas-7-8-3~4~5~7" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-8-3~4~5~7");
        drawNumberline(canvas, "3~4~5~7", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20899  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 7/8 - 7~11~13~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{7}{8} \)?</p>
    <canvas id="canvas-7-8-7~11~13~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-7-8-7~11~13~17");
        drawNumberline(canvas, "7~11~13~17", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20599  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/3 - 0~2~4~8</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{3} \)?</p>
    <canvas id="canvas-8-3-0~2~4~8" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-3-0~2~4~8");
        drawNumberline(canvas, "0~2~4~8", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20751  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/3 - 4~8~13~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{3} \)?</p>
    <canvas id="canvas-8-3-4~8~13~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-3-4~8~13~18");
        drawNumberline(canvas, "4~8~13~18", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20921  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/3 - 8~10~12~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{3} \)?</p>
    <canvas id="canvas-8-3-8~10~12~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-3-8~10~12~14");
        drawNumberline(canvas, "8~10~12~14", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20909  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/3 - 8~12~16~19</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{3} \)?</p>
    <canvas id="canvas-8-3-8~12~16~19" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-3-8~12~16~19");
        drawNumberline(canvas, "8~12~16~19", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20907  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/3 - 8~9~12~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{3} \)?</p>
    <canvas id="canvas-8-3-8~9~12~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-3-8~9~12~16");
        drawNumberline(canvas, "8~9~12~16", 3);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20611  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/5 - 0~2~7~8</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{5} \)?</p>
    <canvas id="canvas-8-5-0~2~7~8" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-5-0~2~7~8");
        drawNumberline(canvas, "0~2~7~8", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20787  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/6 - 5~7~8~9</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{6} \)?</p>
    <canvas id="canvas-8-6-5~7~8~9" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-6-5~7~8~9");
        drawNumberline(canvas, "5~7~8~9", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20871  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/6 - 7~8~10~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{6} \)?</p>
    <canvas id="canvas-8-6-7~8~10~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-6-7~8~10~14");
        drawNumberline(canvas, "7~8~10~14", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20913  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/6 - 8~9~10~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{6} \)?</p>
    <canvas id="canvas-8-6-8~9~10~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-6-8~9~10~13");
        drawNumberline(canvas, "8~9~10~13", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20919  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/6 - 8~9~13~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{6} \)?</p>
    <canvas id="canvas-8-6-8~9~13~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-6-8~9~13~17");
        drawNumberline(canvas, "8~9~13~17", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20655  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/7 - 1~4~6~8</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{7} \)?</p>
    <canvas id="canvas-8-7-1~4~6~8" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-7-1~4~6~8");
        drawNumberline(canvas, "1~4~6~8", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20657  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/7 - 1~6~8~10</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{7} \)?</p>
    <canvas id="canvas-8-7-1~6~8~10" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-7-1~6~8~10");
        drawNumberline(canvas, "1~6~8~10", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20763  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/7 - 4~8~10~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{7} \)?</p>
    <canvas id="canvas-8-7-4~8~10~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-7-4~8~10~13");
        drawNumberline(canvas, "4~8~10~13", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20809  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/7 - 5~7~8~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{7} \)?</p>
    <canvas id="canvas-8-7-5~7~8~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-7-5~7~8~13");
        drawNumberline(canvas, "5~7~8~13", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20803  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 8/7 - 5~8~11~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{8}{7} \)?</p>
    <canvas id="canvas-8-7-5~8~11~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-8-7-5~8~11~14");
        drawNumberline(canvas, "5~8~11~14", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20941  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/2 - 9~12~17~22</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{2} \)?</p>
    <canvas id="canvas-9-2-9~12~17~22" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-2-9~12~17~22");
        drawNumberline(canvas, "9~12~17~22", 2);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20607  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/4 - 0~5~7~9</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{4} \)?</p>
    <canvas id="canvas-9-4-0~5~7~9" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-4-0~5~7~9");
        drawNumberline(canvas, "0~5~7~9", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~C~%100%D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20753  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/4 - 4~6~9~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{4} \)?</p>
    <canvas id="canvas-9-4-4~6~9~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-4-4~6~9~13");
        drawNumberline(canvas, "4~6~9~13", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20955  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/4 - 9~10~13~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{4} \)?</p>
    <canvas id="canvas-9-4-9~10~13~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-4-9~10~13~16");
        drawNumberline(canvas, "9~10~13~16", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20957  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/4 - 9~10~14~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{4} \)?</p>
    <canvas id="canvas-9-4-9~10~14~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-4-9~10~14~18");
        drawNumberline(canvas, "9~10~14~18", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20953  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/4 - 9~12~15~20</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{4} \)?</p>
    <canvas id="canvas-9-4-9~12~15~20" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-4-9~12~15~20");
        drawNumberline(canvas, "9~12~15~20", 4);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20759  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/5 - 4~5~9~11</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{5} \)?</p>
    <canvas id="canvas-9-5-4~5~9~11" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-5-4~5~9~11");
        drawNumberline(canvas, "4~5~9~11", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20797  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/5 - 5~9~11~13</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{5} \)?</p>
    <canvas id="canvas-9-5-5~9~11~13" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-5-5~9~11~13");
        drawNumberline(canvas, "5~9~11~13", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20795  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/5 - 5~9~13~16</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{5} \)?</p>
    <canvas id="canvas-9-5-5~9~13~16" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-5-5~9~13~16");
        drawNumberline(canvas, "5~9~13~16", 5);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20781  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/6 - 5~9~13~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{6} \)?</p>
    <canvas id="canvas-9-6-5~9~13~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-6-5~9~13~17");
        drawNumberline(canvas, "5~9~13~17", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20819  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/6 - 6~9~13~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{6} \)?</p>
    <canvas id="canvas-9-6-6~9~13~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-6-6~9~13~14");
        drawNumberline(canvas, "6~9~13~14", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20861  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/6 - 7~9~13~18</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{6} \)?</p>
    <canvas id="canvas-9-6-7~9~13~18" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-6-7~9~13~18");
        drawNumberline(canvas, "7~9~13~18", 6);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~%100%B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20617  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/7 - 0~4~9~14</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{7} \)?</p>
    <canvas id="canvas-9-7-0~4~9~14" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-7-0~4~9~14");
        drawNumberline(canvas, "0~4~9~14", 7);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~A~B~%100%C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

<!-- question: 20983  -->
  <question type="cloze">
    <name>
      <text>Welche Markierung gehört zu 9/8 - 9~11~15~17</text>
    </name>
    <questiontext format="html">
      <text><![CDATA[<p>Welche Markierung gehört zu \( \frac{9}{8} \)?</p>
    <canvas id="canvas-9-8-9~11~15~17" style="background-color:#FFF" width="800" height="200">
        </canvas>
    
    <script>
        var canvas = document.getElementById("canvas-9-8-9~11~15~17");
        drawNumberline(canvas, "9~11~15~17", 8);
    
    
        //Zeichne einen Zahlenstrahl
        function drawNumberline(canvas, num, denom, minNmb = NaN, maxNmb = NaN, extraLinesLeft = 2, extraLinesRight = 2) {
            //check parameters
            minNmb = parseInt(minNmb);
            maxNmb = parseInt(maxNmb);
            nums = num.split("~");
            numsint = nums.map(a => parseInt(a, 10));
            console.log("nums: ", nums, "numsint: ", numsint);
            num = parseInt(nums[0]);
            denom = parseInt(denom);
            if (isNaN(minNmb) || minNmb >= num / denom) { // Mimimum am Zahlenstrahl berechnen
                minNmb = Math.floor(Math.min(...numsint) / denom);
            }
            if (isNaN(maxNmb) || maxNmb <= num / denom) { // Maximum am Zahlenstrahl berechnen
                maxNmb = Math.ceil(Math.max(...numsint) / denom);
            }
            if (isNaN(extraLinesLeft) || extraLinesLeft < 0) {
                extraLinesLeft = 2;
            }
            if (isNaN(extraLinesRight) || extraLinesRight < 0) {
                extraLinesRight = 2;
            }
            //Defining and Calculating needed values
            var border = 2; //Rand am Canvas  
            var ctx = canvas.getContext("2d");
            ctx.fillStyle = 'white';
            ctx.fillRect(0, 0, canvas.width, canvas.height); //delete everything
            var w = canvas.width - 2 * border;
            var h = canvas.height - 2 * border;
            var numOfSections = ((maxNmb - minNmb) * denom + extraLinesLeft + extraLinesRight);
            var lengthPerSection = Math.floor(w / (numOfSections + 1));
            var lineWidth = 2; //Line Thickness - what makes sense?
            var fontSize = Math.floor(h / 6);
    
            // we are drawing in the middle of the canvas
            ctx.lineWidth = lineWidth;
    
            //draw the number line - base line
            ctx.strokeStyle = 'black';
            ctx.beginPath();
            ctx.moveTo(border, h / 2);
            ctx.lineTo(border + (numOfSections + 1) * lengthPerSection, h / 2);
            ctx.stroke();
            //draw the tickmarks
            for (let l = 0; l <= numOfSections; l++) {
                if ((l - extraLinesLeft) % denom == 0) { // Thick tickmarks with text
                    ctx.lineWidth = 2 * lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, h / 3);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 2 * h / 3);
                    ctx.stroke();
                    //Add the text
                    ctx.font = "" + fontSize + "px Arial";
                    ctx.fillStyle = "black";
                    ctx.textAlign = "center";
                    ctx.fillText("" + (minNmb + (l - extraLinesLeft) / denom), border + (l + 0.5) * lengthPerSection, h / 4);
                } else {
                    ctx.lineWidth = lineWidth;
                    ctx.beginPath();
                    ctx.moveTo(border + (l + 0.5) * lengthPerSection, 4 * h / 9);
                    ctx.lineTo(border + (l + 0.5) * lengthPerSection, 5 * h / 9);
                    ctx.stroke();
                }
            }
            // draw the arrow - red lines for chosen numbers
            ctx.strokeStyle = 'red';
            let letternum = 65;
            for (i in nums) {
                var num = parseInt(nums[i]);
                if (!isNaN(num) && extraLinesLeft + num - minNmb * denom < numOfSections) {
                    var numSections = extraLinesLeft + num - minNmb * denom;
                    ctx.beginPath();
                    ctx.moveTo(border + (numSections + 0.5) * lengthPerSection, 2 * h / 9);
                    ctx.lineTo(border + (numSections + 0.5) * lengthPerSection, 7 * h / 9);
                    ctx.stroke();
                    //Text under red line
                    ctx.fillStyle = "red";
                    ctx.fillText(String.fromCharCode(letternum++), border + (numSections + 0.5) * lengthPerSection, 17 * h / 18);
                }
            }
        }
    </script>
    
    <p><br></p>
    <p dir="ltr" style="text-align: left;">{1:MULTICHOICE_H:~%100%A~B~C~D}<br></p>]]></text>
    </questiontext>
    <generalfeedback format="html">
      <text></text>
    </generalfeedback>
    <penalty>0.3333333</penalty>
    <hidden>0</hidden>
    <idnumber></idnumber>
  </question>

</quiz>