var otazky = new Array() var spravne = new Array() function Otazka() { this.parametry = new Array() this.vystupy = new Array() this.zadani = "" this.setParametry = function(retez) { var pole = retez.split("\n"); for (var i= 0; i< pole.length; i++) { this.parametry = this.parametry.concat(pole[i].split("$")) } } this.setVystupy = function(retez) { var pole = retez.split("\n"); this.vystupy = new Array() for (var i= 0; i< pole.length; i++) { this.vystupy = this.vystupy.concat(pole[i].split("$")) } } } window.onload = function() { generateQuestions(); } function generateQuestions() { var section = document.querySelector("section.genpriklady"); var header = section.appendChild(document.createElement("h2")); header.innerHTML = "Příklady k procvičení" for (var i = 0; i < examples.length; i++) { var ex = section.appendChild(document.createElement("div")) ex.className = "question"; ex.setAttribute("data-index", i); ex.innerHTML = generovatNahled(i); //examples[i].task } } function log(arg) { return Math.log(arg)/Math.LN10 } function ln(arg) { return Math.log(arg) } function sin(arg) { return Math.sin(arg) } function cos(arg) { return Math.cos(arg) } function tg(arg) { return Math.tan(arg) } function exp(arg) { return Math.exp(arg) } function sqrt(arg) { return Math.sqrt(arg) } function cbrt(arg) { return Math.cbrt(arg) } function pow(arg1, arg2) { return Math.pow(arg1, arg2) } function des_carka(cislo) { var vystup = "" + cislo; vystup = vystup.replace(/\./g,","); if (vystup.charAt(0) ==",") vystup = "0" + vystup; return vystup } function nahodne(spodni, horni, krok) { if (krok != undefined) { var count = Math.floor((horni-spodni)/krok)+1; return spodni + krok*Math.floor(count*Math.random()); } else { return spodni + Math.random()*(horni-spodni) } } function zaokrouhlit(cislo, mista) { var cislo2 = Number(cislo) var pocet = Number(mista); return Math.round(cislo2 * Math.pow(10, pocet))/ Math.pow(10, pocet); } function interpol(poleX, poleY, x0) { var imin =0; var imax=0; for (var i = 1; i< poleX.length; i++) { if (poleX[i-1] < x0 && poleX[i] > x0) { imin = i-1; imax = i; break; } } return poleY[imin] + (poleY[imax]-poleY[imin])/(poleX[imax]-poleX[imin])*(x0 - poleX[imin]) } function regenerate(node) { var question = node.parentNode.parentNode var index = parseInt(question.getAttribute("data-index")); question.innerHTML = generovatNahled(index); } function formatovatCislo(cislo) { cislo = Number(cislo); return cislo } function generovatNahled(index) { var vystup =""; var otazka = examples[index]; var task = otazka.task //priklady[index*3 + 2] var solution = otazka.solution; otazka.used = []; //vstupni parametry for (var i= 0; i< otazka.param_in.length; i++) { var vals = otazka.param_in[i].split(";"); var newParam = { name: vals[0], value: 0}; for (var j = 0; j < otazka.used.length; j++) { var par = otazka.used[j]; vals[1] = vals[1].replace(new RegExp(par.name, "g"), par.value ) } nahrada = new RegExp("<" + newParam.name + ">","g"); newParam.value = eval(vals[1]); if (vals[2] != "t" && vals[2].indexOf("nz") == -1 ) { newParam.value = zaokrouhlit(newParam.value, vals[2]) } otazka.used.push(newParam); var nahr2 = "" + newParam.value; if (vals[2] != "t" && nahr2.indexOf("e") > -1) { var mantisa = nahr2.substring(0, nahr2.indexOf("e")); var exp = nahr2.substring(nahr2.indexOf("e")+1); nahr2 = mantisa + "×10" + exp + ""; } task = task.replace(nahrada, nahr2); solution = solution.replace(nahrada, nahr2); } task = task.replace(/(\d)\.(\d)/g, "$1,$2"); task = task.replace(/×/g, "·"); //vstupni policka spravne[index] = new Array() for (i= 0; i< otazka.param_out.length; i++) { var vals = otazka.param_out[i].split(";"); var newParamOut = { name: vals[0], value: 0, tol:0}; for (var j = 0; j < otazka.used.length; j++) { var par = otazka.used[j]; vals[1] = vals[1].replace(new RegExp(par.name, "g"), par.value ) } if (vals[2] != "tf") { newParamOut.type= "n" newParamOut.value = eval(vals[1]); var rounded = parseInt(vals[2]) var nazev = ":n" + (i+1); newParamOut.value = zaokrouhlit( newParamOut.value, rounded ) var tolerance = parseFloat(vals[3]); newParamOut.tol = tolerance; newParamOut.tolType = "a" if (vals[3].indexOf("%") > -1) { newParamOut.tolType = "r"; newParamOut.tol /= 100; } var nahrada = new RegExp("<" + newParamOut.name + ">","g") var sprVal = "" + newParamOut.value + " ± " + ((newParamOut.tolType == "a") ? newParamOut.tol : newParamOut.tol*newParamOut.value); //task = task.replace(nahrada," ") task = task.replace(nahrada," ") solution = solution.replace(nahrada, sprVal); } else { //otazky t/f newParamOut.type= "r" newParamOut.value = eval(vals[1]); var nazev = ":r" + (i+1); var nahrada = new RegExp("<" + newParamOut.name + ">","g"); var repl = " "; repl += " "; task = task.replace(nahrada,repl); solution = solution.replace(nahrada,repl); } spravne[index].push(newParamOut); otazka.used.push(newParamOut); } if (otazka.param_sol && otazka.param_sol.length > 0) { for (var i= 0; i< otazka.param_sol.length; i++) { var vals = otazka.param_sol[i].split(";"); var newParam = { name: vals[0], value: 0}; for (var j = 0; j < otazka.used.length; j++) { var par = otazka.used[j]; vals[1] = vals[1].replace(new RegExp(par.name, "g"), par.value ) } nahrada = new RegExp("<" + newParam.name + ">","g"); newParam.value = eval(vals[1]); //vals[1] if (vals[2] != "t" && vals[2].indexOf("nz") == -1 ) { newParam.value = zaokrouhlit(newParam.value, vals[2]) } otazka.used.push(newParam); var nahr2 = "" + newParam.value; if (vals[2] != "t" && nahr2.indexOf("e") > -1) { var mantisa = nahr2.substring(0, nahr2.indexOf("e")); var exp = nahr2.substring(nahr2.indexOf("e")+1); nahr2 = mantisa + "×10" + exp + ""; } solution = solution.replace(nahrada, nahr2); } } task += "