function Generate($level) { $CI =& get_instance(); $CI->load->library('10/Szogfuggvenyek/Haromszog_tangens', NULL, 'tangens'); $node = 'AC'; $length = rand(ceil($level / 2), $level); $AB = $length + rand(ceil($level / 2), $level); $question = 'Az $ABC$ derékszögű háromszög $' . $node . '$ befogója $' . $length . '$ cm, $AB$ átfogója $' . $AB . '$ cm hosszú. Számítsa ki az $ABC$ háromszög hegyesszögeinek nagyságát legalább két tizedesjegy pontossággal!'; $alpha = toDeg(acos($length / $AB)); $beta = 90 - $alpha; $alphatext = str_replace('.', ',', round($alpha * 100) / 100); $betatext = str_replace('.', ',', round($beta * 100) / 100); $correct = array(round1($alpha), round1($beta)); $labels = array('$\\alpha$', '$\\beta$'); $solution = '$\\alpha=' . $alphatext . '°$ és $\\beta=' . $betatext . '°$.'; $hints[][] = 'Rajzoljunk egy derékszögű háromszöget:' . $CI->tangens->Triangle(); $hints[][] = 'Tudjuk, hogy az $\\textcolor{blue}{' . $node . '}$ befogó $' . $length . '$ cm hosszú:' . $CI->tangens->Triangle([$node], [$length], ['blue']); $hints[][] = 'Tudjuk, hogy az $\\textcolor{green}{AB}$ átfogó $' . $AB . '$ cm hosszú:' . $CI->tangens->Triangle([$node, 'AB'], [$length, $AB], ['blue', 'green']); $page[] = 'Az $\\alpha$ szög <b>koszinusza</b> a szög melletti befogó ($AC$) és az átfogó ($AB$) hányadosa:' . '$$\\cos\\alpha=\\frac{\\textcolor{blue}{AC}}{\\textcolor{green}{AB}}=' . '\\frac{\\textcolor{blue}{' . $length . '}}{\\textcolor{green}{' . $AB . '}}' . '$$'; $page[] = 'Az $\\alpha$ szöget úgy kapjuk meg, ha a hányados <b>arkusz koszinuszát</b> vesszük (ami a koszinusz függvény inverze), és az eredményt két tizedesjegyre kerekítjük:$$\\alpha=\\arccos\\frac{\\textcolor{blue}{' . $length . '}}{\\textcolor{green}{' . $AB . '}}=' . $alphatext . '°$$'; $page[] = '<b>Megjegyzés</b>: az eredményt a következőképpen lehet kiszámolni számológéppel: <ol> <li>Állítsuk be a gépet <b>DEG</b> módba (ha még nem tettük):<br /><kbd>MODE</kbd> <kbd>DEG</kbd></li> <li>Az koszinusz függvény inverzét a <b>cos<sup>-1</sup></b> gomb segítségével lehet kiszámolni:<br />' . '<kbd>' . $length . '</kbd> <kbd>÷</kbd> <kbd>' . $AB . '</kbd> <kbd>=</kbd> <kbd>Shift</kbd> <kbd>cos<sup>-1</sup></kbd> <kbd>=</kbd></li> </ol>'; $page[] = 'Tehát az $\\alpha$ szög <span class="label label-success">$' . $alphatext . '°$</span>.'; $hints[] = $page; $page = []; $page[] = 'Mivel a háromszög belső szögeinek összege $180°$, ezért a $\\beta$ szöget már könnyen ki lehet számolni:$$\\beta=180°-90°-' . $alphatext . '°$$'; $page[] = 'Tehát a $\\beta$ szög <span class="label label-success">$' . $betatext . '°$</span>.'; $hints[] = $page; return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints, 'labels' => $labels, 'type' => 'array'); }
function Generate($level) { $q_no = rand(4, 8); $opts_no = rand(2, 5); $ppl = rand(7, 13); $opts_text = range(chr(65), chr(65 + $opts_no - 1)); $max_points = $ppl * $q_no; $points = rand(1, floor($max_points / 5)) * 5; $rand = rand(1, 2); // // Original exercise // $q_no = 6; // $opts_no = 3; // $ppl = 10; // $points = 35; // $rand = 1; if ($rand == 1) { $type = 'jó'; $rate = $points / $max_points; $correct = round($points / $max_points * 360); } else { $type = 'rossz'; $rate = 1 - $points / $max_points; $correct = round((1 - $points / $max_points) * 360); } $question = 'Egy ' . NumText($q_no) . 'kérdéses tesztben minden kérdésnél a megadott ' . NumText($opts_no) . ' lehetőség (' . StringArray($opts_text, 'és') . ') közül kellett kiválasztani a helyes választ. A tesztet ' . NumText($ppl) . ' diák írta meg. A teszt értékelésekor minden helyes válaszra $1$ pont, helytelen válaszra pedig $0$ pont jár. Tudjuk, hogy a ' . NumText($ppl) . ' diák összesen $' . $points . '$ pontot szerzett. Ha az összes jó és az összes rossz válasz számából kördiagramot készítünk, mekkora körcikk szemlélteti a ' . $type . ' válaszok számát? <i>(Válaszát egész fokokra kerekítve adja meg!)</i>' . $this->PieChart(); $solution = '$' . $correct . '°$'; $page[] = 'Ha minden diák minden kérdésre jól válaszolt volna, összesen $' . $ppl . '\\cdot' . $q_no . '=' . $max_points . '$ pontot szerzett volna.'; $page[] = 'A ' . NumText($ppl) . ' diák összesen $' . $points . '$ pontot szerzett, ezért a jó válaszok száma $' . $points . '$, a rossz válaszok száma pedig $' . strval($max_points - $points) . '$.'; $page[] = 'A ' . $type . ' válaszok aránya: $$\\frac{' . ($type == 'jó' ? $points : $max_points - $points) . '}{' . $max_points . '}' . (round1($rate) == $rate ? '=' : '\\approx') . round2($rate) . '$$'; $page[] = 'Ezért a kördiagramon a ' . $type . ' válaszokhoz tartozó körcikk nagysága egész fokokra kerekítve $\\frac{' . ($type == 'jó' ? $points : $max_points - $points) . '}{' . $max_points . '}\\cdot360°' . ($rate * 360 == $correct ? '=' : '\\approx') . '$<span class="label label-success">$' . $correct . '$</span>$°$.' . $this->PieChart($correct); $hints[] = $page; return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints, 'labels' => ['right' => '$°$']); }
function Generate($level) { $year_diff = rand($level, 2 * $level); $year2 = 2014 + $year_diff; $tiger1 = rand($level, 5 * $level) * 100; $rate1 = rand(750, 950) / 1000; // // Original exercise // $year_diff = 2; // $year2 = 2014 + $year_diff; // $tiger1 = 3600; // $rate1 = 0.854; $rate2 = round1(pow($rate1, $year_diff), 3); $rate2_percent = round1(100 * $rate2, 0); $tiger2 = round($tiger1 * $rate2); $question = 'Egy $2014$ végén készült előrejelzés szerint az Indiában élő tigrisek $t$ száma az elkövetkező években (az egyes évek végén) megközelítőleg a következő összefüggés szerint alakul: $t(x) = ' . $tiger1 . ' \\cdot ' . round2($rate1, 3) . '^x$, ahol $x$ a $2014$ óta eltelt évek számát jelöli. Számítsa ki, hogy az előrejelzés alapján $' . $year2 . '$ végére hány százalékkal csökken a tigrisek száma a $2014$-es év végi adathoz képest! <i>(A megoldást egészekre kerekítve adja meg!)</i>'; $page[] = '<b>1. megoldás:</b> Ha az $x$ helyére $0$-t írunk, megkapjuk a tigrisek számát $2014$-ben:$$t(0)=' . $tiger1 . '\\cdot' . round2($rate1, 3) . '^0=' . $tiger1 . '\\cdot1=' . $tiger1 . '$$'; $page[] = '$2014$ és $' . $year2 . '$ között összesen $' . $year2 . '-2014=' . $year_diff . '$ év telik el.'; $page[] = 'Ezért ha az $x$ helyére $' . $year_diff . '$-' . Dativ($year_diff) . ' írunk, megkapjuk, hogy az előrejelzés szerint $' . $year2 . '$-' . In($year2) . ' hány tigris lesz:' . '$$t(' . $year_diff . ')=' . $tiger1 . '\\cdot' . round2($rate1, 3) . '^{' . $year_diff . '}' . ($rate2_percent == 100 * $rate2 ? '=' : '\\approx') . $tiger1 . '\\cdot' . round2($rate2, 3) . ($tiger1 * $rate2 == $tiger2 ? '=' : '\\approx') . $tiger2 . '$$'; $page[] = 'Osszuk el a $t(' . $year_diff . ')$-' . Dativ($year_diff) . ' elosztjuk $t(0)$-lal:' . '$$\\frac{t(' . $year_diff . ')}{t(0)}=\\frac{' . round2($tiger2, 0) . '}{' . $tiger1 . '}\\approx' . round2($rate2, 3) . ($rate2_percent == 100 * $rate2 ? '=' : '\\approx') . $rate2_percent . '\\%$$'; $page[] = 'Ez azt jelenti, hogy $' . $year2 . '$-' . In($year2) . ' a tigrisek száma $2014$-hez képest csak $' . $rate2_percent . '\\%$ lesz, vagyis a számuk $100\\%-' . $rate2_percent . '\\%=$<span class="label label-success">$' . strval(100 - $rate2_percent) . '$</span>$\\%$-kal csökken.'; $hints[] = $page; $page = []; $page[] = '<b>2. megoldás:</b> A tigrisek száma minden évben az előző évinek $' . round2($rate1, 3) . '$-' . Times2($rate1 * 1000) . ' változik.'; $page[] = 'Ekkor $' . $year_diff . '$ év alatt a változás $' . round2($rate1, 3) . '^' . $year_diff . ($rate2_percent == $rate2 * 100 ? '=' : '\\approx') . round2($rate2, 3) . ($rate2_percent == 100 * $rate2 ? '=' : '\\approx') . $rate2_percent . '\\%$ lesz.'; $page[] = 'Azaz, a tigrisek száma $100\\%-' . $rate2_percent . '\\%=$<span class="label label-success">$' . strval(100 - $rate2_percent) . '$</span>$\\%$-kal csökken.'; $hints[] = $page; $correct = 100 - $rate2_percent; $solution = '$' . $correct . '$'; return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'labels' => ['right' => '$\\%$'], 'hints' => $hints); }
function Generate($level) { $option = rand(1, 3); $length = rand(2, 7); if ($option == 1) { $angle = 60; $correct = round1($length * sqrt(3)); } elseif ($option == 2) { $angle = 90; $correct = round1($length * sqrt(2)); } elseif ($option == 3) { $angle = 120; $correct = $length; } // // Original exercise // $length = 5; // $angle = 120; // $correct = $length; $question = 'Az $\\overrightarrow{AB}$ és $\\overrightarrow{AC}$ vektorok $' . $angle . '°$-os szöget zárnak be egymással, és mindkét vektor hossza $' . $length . '$ egység.'; $solution = '$' . str_replace('.', ',', round($correct * 100) / 100) . '$'; $question .= ' Számítsa ki az $\\overrightarrow{AB}+\\overrightarrow{AC}$ vektor hosszát legalább két tizedesjegy pontossággal!'; // $question .= ' Számítsa ki az $\overrightarrow{AB}+\overrightarrow{AC}$ vektor hosszát!'; $hints = $this->Hints($angle, $length); return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints); }
function Generate($level) { $m = pow(-1, rand(1, 2)) * rand(1, 2); $b = rand(-5, 5); $A[0] = pow(-1, rand(1, 2)) * rand(1, 10); // Ax != 0 $A[1] = $A[0] * $m + $b; $B[0] = -$A[0]; $B[1] = $B[0] * $m + $b; // // Original exercise // $A = [-3,-1]; // $B = [3,7]; // $m = ($A[1]-$B[1])/($A[0]-$B[0]); // $b = $A[1] - $A[0]*$m; // print_r('m='.$m.', b='.$b.'<br />'); // print_r('A('.$A[0].';'.$A[1].'), B('.$B[0].';'.$B[1].') <br />'); $mfrac['nom'] = ($B[1] - $A[1]) / gcd($B[1] - $A[1], $B[0] - $A[0]); $mfrac['denum'] = ($B[0] - $A[0]) / gcd($B[1] - $A[1], $B[0] - $A[0]); $question = 'Írja fel a hozzárendelési utasítását annak a lineáris függvénynek, mely $' . ($A[0] < 0 ? '(' . $A[0] . ')' : $A[0]) . '$-' . To($A[0]) . ' $' . ($A[1] < 0 ? '(' . $A[1] . ')' : $A[1]) . '$-' . Dativ($A[1]) . ' és $' . ($B[0] < 0 ? '(' . $B[0] . ')' : $B[0]) . '$-' . To($B[0]) . ' $' . ($B[1] < 0 ? '(' . $B[1] . ')' : $B[1]) . '$-' . Dativ($B[1]) . ' rendel! (A hozzárendelési utasítást $x\\mapsto mx+b$ alakban adja meg!)'; $page[] = 'A hozzárendelés egy $y=mx+b$ alakú lineáris függvény lesz.'; $page[] = 'A függvény $' . ($A[0] < 0 ? '(' . $A[0] . ')' : $A[0]) . '$-' . To($A[0]) . ' $' . ($A[1] < 0 ? '(' . $A[1] . ')' : $A[1]) . '$-' . Dativ($A[1]) . ' rendel, azaz:$$' . $A[1] . '=' . $A[0] . '\\cdot m+b$$'; $page[] = 'Továbbá azt is tudjuk, hogy $' . ($B[0] < 0 ? '(' . $B[0] . ')' : $B[0]) . '$-' . To($B[0]) . ' $' . ($B[1] < 0 ? '(' . $B[1] . ')' : $B[1]) . '$-' . Dativ($B[1]) . ' rendel, azaz:$$' . $B[1] . '=' . $B[0] . '\\cdot m+b$$'; $hints[] = $page; $page = []; $page[] = '$$\\begin{eqnarray} I.\\quad& ' . $A[1] . '&=&' . $A[0] . '\\cdot m+b\\\\ II.\\quad& ' . $B[1] . '&=&' . $B[0] . '\\cdot m+b \\end{eqnarray}$$ Vonjuk ki az első egyenletből a másodikat! Ekkor a $b$-s tagok kiesnek:$$\\begin{eqnarray} ' . $A[1] . (-$B[1] < 0 ? '' : '+') . strval(-$B[1]) . '&=&(' . $A[0] . (-$B[0] < 0 ? '' : '+') . strval(-$B[0]) . ')\\cdot m+b-b\\\\ ' . strval($A[1] - $B[1]) . '&=&' . strval($A[0] - $B[0]) . '\\cdot m\\\\ \\frac{' . strval($A[1] - $B[1]) . '}{' . strval($A[0] - $B[0]) . '}&=&m\\\\ \\end{eqnarray}$$'; $page[] = 'Tehát az $m$ értéke <span class="label label-success">$' . (round($m) == $m ? $m : '\\frac{' . $mfrac['nom'] . '}{' . $mfrac['denum'] . '}') . '$</span>.'; $hints[] = $page; $page = []; $page[] = '$$\\begin{eqnarray} I.\\quad& ' . $A[1] . '&=&' . $A[0] . '\\cdot m+b\\\\ II.\\quad& ' . $B[1] . '&=&' . $B[0] . '\\cdot m+b \\end{eqnarray}$$ Most adjuk össze a két egyenletet! Ekkor az $m$-es tagok esnek ki:$$\\begin{eqnarray} ' . $A[1] . ($B[1] < 0 ? '' : '+') . $B[1] . '&=&(' . $A[0] . ($B[0] < 0 ? '' : '+') . $B[0] . ')\\cdot m+b+b\\\\ ' . strval($A[1] + $B[1]) . '&=&2\\cdot b\\\\ \\frac{' . strval($A[1] + $B[1]) . '}{2}&=&b\\\\ \\end{eqnarray}$$'; $page[] = 'Tehát a $b$ értéke <span class="label label-success">$' . $b . '$</span>.'; $hints[] = $page; $correct = [round1($m), $b]; $solution = '$m=' . round2($m) . '\\quad b=' . $b . '$'; return array('question' => $question, 'correct' => $correct, 'type' => 'array', 'solution' => $solution, 'hints' => $hints, 'labels' => ['$m$', '$b$']); }
function Hints($a, $b, $c, $area) { $sides = 6; $triangle = sqrt(3) * pow($b, 2) / 4; $T_bottom = $sides * $triangle; $page[] = '<b>1. lépés:</b> Számoljuk ki az alaplap területét!'; $page[] = 'Az alaplap $' . $sides . '$ db $' . $b . '\\,\\text{cm}$ oldalú szabályos háromszögből áll.' . $this->Bottom($b); $hints[] = $page; $page = []; $page[] = 'Számoljuk ki egy háromszög területét!' . $this->Bottom($b, 1); $hints[] = $page; $page = []; $page[] = '<div class="alert alert-info"><strong>Háromszög területe:</strong><br />Ha egy háromszög oldala $a$, a hozzá tartozó magasság $m_a$, akkor a területe:$$T_{\\triangle}=\\frac{a\\cdot m_a}{2}$$<b>Szabályos háromszög magassága</b><br />Ha egy szabályos háromszög oldala $a$, akkor a magassága $$m_a=\\frac{\\sqrt{3}}{2}\\cdot a$$</div>'; $page[] = 'Jelen esetben $a=7$, ezért:$$\\begin{eqnarray}T_{\\triangle}=\\frac{a\\cdot m_a}{2}&=&\\frac{' . $b . '\\cdot\\left(\\frac{\\sqrt{3}}{2}\\cdot' . $b . '\\right)}{2} \\\\ &=&\\frac{\\sqrt{3}\\cdot' . strval(pow($b, 2)) . '}{4}\\\\ &\\approx&' . round2($triangle) . '\\,\\text{cm}^2\\end{eqnarray}$$'; $page[] = 'Tehát az alaplap területe$$T_{\\text{alaplap}}=' . $sides . '\\cdot T_{\\triangle}=' . $sides . '\\cdot' . round2($triangle) . '\\approx' . round2($T_bottom) . '\\,\\text{cm}^2$$'; $hints[] = $page; $page = []; $page[] = '<b>2. lépés:</b> Számoljuk ki az oldallapok területét!'; $page[] = 'A doboznak mind a $' . $sides . '$ oldala egy szimmetrikus trapéz, aminek az alapjai $' . $a . '$ ill. $' . $b . '\\,\\text{cm}$, oldalai pedig $' . $c . '\\,\\text{cm}$ hosszúak.' . $this->Side($a, $b, $c); $hints[] = $page; $page = []; $page[] = 'Az alsó oldalt mérjük rá a felsőre, és nézzük meg, hány centi marad jobb és baloldalon:' . $this->Side($a, $b, $c, 1); $hints[] = $page; $d = ($a - $b) / 2; $e = pow($c, 2) - pow($d, 2); $m = sqrt($e); $page = []; $page[] = 'Ekkor a jobb és a bal oldalon egy olyan derékszögű háromszöget kaptunk, aminek az átfogója $' . $c . '\\,\\text{cm}$, az egyik befogója pedig $' . $d . '\\,\\text{cm}$.' . $this->Side($a, $b, $c, 2); $page[] = 'A másik befogót ($x$) - ami egyben a trapéz magassága - Pitagorasz-tétellel tudjuk kiszámolni:$$\\begin{eqnarray} x^2+' . $d . '^2&=&' . $c . '^2\\\\ x^2+' . strval(pow($d, 2)) . '&=&' . strval(pow($c, 2)) . '\\\\ x^2&=&' . $e . '\\\\ x&=&\\sqrt{' . $e . '}\\\\ x&' . (round1($m) == $m ? '=' : '\\approx') . '&' . round2($m) . '\\end{eqnarray}$$'; $hints[] = $page; $T_side = ($a + $b) / 2 * $m; $T_all = $T_bottom + $sides * $T_side; $page = []; $page[] = '<div class="alert alert-info"><strong>Trapéz területe:</strong><br />Ha egy trapéz két párhuzamos oldala $a$ és $c$, és magassága $m$, akkor a területe:$$T=\\frac{a+c}{2}\\cdot m$$</div>'; $page[] = 'Egy oldal területe:$$T=\\frac{' . $a . '+' . $b . '}{2}\\cdot' . strval(round2($m)) . '=' . round2($T_side) . '$$'; $page[] = 'Mivel összesen $' . $sides . '$ oldal van, ezért az oldallapok összterülete:$$T_{\\text{oldallapok}}=' . $sides . '\\cdot' . round2($T_side) . '=' . round2($sides * $T_side) . '$$'; $page[] = 'Ekkor egy virágtartó doboz összterülete:$$\\begin{eqnarray}T_{\\text{össz}}&=&T_{\\text{alaplap}}+T_{\\text{oldallapok}}\\\\ &\\approx&' . round2($T_bottom) . '+' . round2($sides * $T_side) . '=' . round2($T_all) . '\\end{eqnarray}$$'; $hints[] = $page; $pieces = $area * 10000 / $T_all; $page = []; $page[] = 'A gép $1$ kg alapanyagból $' . round2($area) . '\\,\\text{m}^2$ felületet képes készíteni, ami összesen $' . round2($area) . '\\cdot10000=' . round2($area * 10000) . '\\,\\text{cm}^2$.'; $page[] = 'Számoljuk ki, hogy $1$ kg anyagból hány doboz készíthető:$$\\frac{' . round2($area * 10000) . '}{' . round2($T_all) . '}\\approx' . round2($pieces) . '$$'; $page[] = 'Tehát $1$ kg alapanyagból <span class="label label-success">$' . floor($pieces) . '$</span> darab doboz készíthető.'; $hints[] = $page; return array($hints, floor($pieces)); }
function Generate($level) { $angle = rand(1, 179); $length = rand(2, 7); // // Original exercise // $angle = 120; // $length = 5; $correct = round1(sqrt(pow($length, 2) + pow($length, 2) - 2 * $length * $length * cos(toRad($angle)))); $question = 'Az $\\overrightarrow{AB}$ és $\\overrightarrow{AC}$ vektorok $' . $angle . '°$-os szöget zárnak be egymással, és mindkét vektor hossza $' . $length . '$ egység.'; $solution = '$' . round2($correct) . '$'; $question .= ' Számítsa ki az $\\overrightarrow{AB}-\\overrightarrow{AC}$ vektor hosszát legalább két tizedesjegy pontossággal!'; $hints = $this->Hints($angle, $length, $correct); return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints); }
function Generate($level) { $q_no = rand(5, 7); $opts_no = rand(2, 4); // // Original exercise // $q_no = 6; // $opts_no = 3; $opts_text = range(chr(65), chr(65 + $opts_no - 1)); $prob = 1 - pow(($opts_no - 1) / $opts_no, $q_no); $question = 'Egy ' . NumText($q_no) . 'kérdéses tesztben minden kérdésnél a megadott ' . NumText($opts_no) . ' lehetőség (' . StringArray($opts_text, 'és') . ') közül kellett kiválasztani a helyes választ. Az egyik diák nem készült fel a tesztre, válaszait tippelve, véletlenszerűen adja meg. Mekkora valószínűséggel lesz legalább egy jó válasza a tesztben? <i>(Válaszát két tizedesjegyre kerekítve adja meg!)</i>'; $page[] = 'Annak a valószínűsége, hogy egy válasz hibás: $$\\frac{' . strval($opts_no - 1) . '}{' . $opts_no . '}$$'; $page[] = 'Annak a valószínűsége, hogy mind ' . The($q_no) . ' ' . NumText($q_no) . ' válasz hibás: $$\\left(\\frac{' . strval($opts_no - 1) . '}{' . $opts_no . '}\\right)^{' . $q_no . '}$$'; $page[] = 'Annak a valószínűsége, hogy legalább az egyik válasz jó: $$1-\\left(\\frac{' . strval($opts_no - 1) . '}{' . $opts_no . '}\\right)^{' . $q_no . '}\\approx' . round2($prob, 4) . '$$'; $page[] = 'Ennek a két tizedesjegyre kerekített értéke <span class="label label-success">$' . round2($prob) . '$</span>.'; $hints[] = $page; $correct = round1($prob, 2); $solution = '$' . round2($prob, 2) . '$'; return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints); }
function Generate($level) { $flower = rand($level, 2 * $level); $all = $flower + rand(1, 2); $p = rand(80, 95) / 100; // // Original exercise // $flower = 8; // $all = 10; // $p = 0.91; $question = 'A kertészetben a sok virághagymának csak egy része hajt ki: $' . round2($p) . '$ annak a valószínűsége, hogy egy elültetett virághagyma kihajt. Számítsa ki annak a valószínűségét, hogy $' . $all . '$ darab elültetett virághagyma közül legalább $' . $flower . '$ kihajt! Válaszát három tizedesjegyre kerekítve adja meg!'; $text = 'Ha $' . $all . '$ virághagyma közül legalább $' . $flower . '$ hajt ki, az azt jelenti, hogy '; for ($i = $flower; $i <= $all; $i++) { $text .= '$' . $i . '$'; if ($i == $all - 1) { $text .= ' vagy '; } elseif ($i == $all - 2) { $text .= ', '; } } $text .= ' virághagyma hajt ki.'; $page[] = $text; $page[] = 'Vizsgáljuk meg ezeket az eseteket külön-külön!'; $hints[] = $page; $order = 1; for ($i = $flower; $i <= $all; $i++) { $p_i = binomial_coeff($all, $i) * pow($p, $i) * pow(1 - $p, $all - $i); $page = []; $page[] = '<b>' . $order . '. eset:</b> $' . $all . '$ virághagyma közül $' . $i . '$ hajt ki.'; $page[] = '$' . $all . '$ virághagyma közül $' . $i . '$-' . Dativ($i) . ' összesen ${' . $all . '\\choose ' . $i . '}$-féleképpen lehet kiválasztani.'; $page[] = 'Annak a valószínűsége, hogy ' . The($i) . ' $' . $i . '$ hagyma kihajt: $' . round2($p, 4) . '^{' . $i . '}$.'; $page[] = 'Annak a valószínűsége, hogy ' . The($all - $i) . ' $' . strval($all - $i) . '$ hagyma nem hajt ki: $(1-' . round2($p, 4) . ')^{' . strval($all - $i) . '}$.'; $page[] = 'Így ennek az esetnek a valószínűsége összesen:$${' . $all . '\\choose ' . $i . '}\\cdot' . round2($p, 4) . '^{' . $i . '}\\cdot(1-' . round2($p, 4) . ')^{' . strval($all - $i) . '}\\approx' . round2($p_i, 4) . '$$'; $hints[] = $page; $p_all1[] = round1($p_i, 4); $p_all2[] = round2($p_i, 4); $order++; } $hints[][] = 'A keresett valószínűség tehát $' . implode('+', $p_all2) . '=' . round2(array_sum($p_all1), 5) . '$, aminek a három tizedesjegyre kerekített értéke <span class="label label-success">$' . round2(array_sum($p_all1), 3) . '$</span>.'; $correct = round1(array_sum($p_all1), 3); $solution = '$' . $correct . '$'; return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints); }
function Hints($bottom, $top, $side) { $hints[][] = 'Mivel a trapéz szimmetrikus, ezért az $A$ és $B$ csúcsnál lévő szögek, illetve a $C$ és $D$ csúcsnál lévő szögek ugyanakkorák:' . $this->Trapez($bottom, $top, $side, 1); $hints[][] = 'Vetítsük le a $CD$ szakaszt merőlegesen az $AB$ szakaszra. Az így kapott $EF$ szakasz ugyanakkora, mint a $CD$ szakasz:' . $this->Trapez($bottom, $top, $side, 2); $ae = ($bottom - $top) / 2; $hints[][] = 'Az $AE$ szakasz hosszát úgy tudjuk kiszámolni, hogy az $AB$ szakasz hosszából kivonjuk az $EF$ szakasz hosszát, és elosztjuk $2$-vel: $$\\frac{' . $bottom . '-' . $top . '}{2}=\\frac{' . strval($bottom - $top) . '}{2}=' . round2($ae) . '\\,\\text{cm}$$' . $this->Trapez($bottom, $top, $side, 3); $alpha = toDeg(acos($ae / $side)); $hints[][] = 'Az $AE$ és $AD$ szakasz hányadosa az $A$ csúcsnál lévő $\\alpha$ szög koszinuszával egyenlő:$$\\cos\\alpha=\\frac{AE}{AD}=\\frac{' . round2($ae) . '}{' . round2($side) . '}$$' . $this->Trapez($bottom, $top, $side, 4); $page[] = 'Ekkor az $\\alpha$ szög a hányados arkusz koszinuszával egyenlő:$$\\alpha=\\arccos\\left(\\frac{' . round2($ae) . '}{' . round2($side) . '}\\right)$$'; $page[] = '<b>Megjegyzés</b>: az eredményt a következőképpen lehet kiszámolni számológéppel: <ol> <li>Állítsuk be a gépet <b>DEG</b> módba (ha még nem tettük):<br /><kbd>MODE</kbd> <kbd>DEG</kbd></li> <li>A koszinusz függvény inverzét a <b>cos<sup>-1</sup></b> gomb segítségével lehet kiszámolni:<br />' . '<kbd>' . round2($ae) . '</kbd> <kbd>÷</kbd> <kbd>' . round2($side) . '</kbd> <kbd>=</kbd> <kbd>Shift</kbd> <kbd>cos<sup>-1</sup></kbd> <kbd>=</kbd></li> </ol>'; $hints[] = $page; $beta = 180 - round1($alpha); $page = []; $page[] = 'Tehát az $A$ csúcsnál lévő szög nagysága $' . Round2($alpha) . '°$.'; $page[] = 'Tudjuk, hogy a trapéz két oldalsó szöge $180°$-ra egészíti ki egymást, ezért a $D$ csúcsnál lévő szöget úgy tudjuk kiszámolni, hogy a $180°$-ból kivonjuk az $\\alpha$ szöget: $180°-' . round2($alpha) . '°=' . round2($beta) . '°$, aminek az egészekre kerekített értéke <span class="label label-success">$' . round($beta) . '°$</span>.'; $hints[] = $page; return array($hints, round($beta)); }
function Hints($start, $increase, $years, $percent) { $months = $years * 12; $sum1 = (2 * $start + ($months - 1) * $increase) / 2 * $months; $page[] = 'Az I. ajánlatban Péter havi fizetései egy $' . round2($increase, 0) . '$ differenciájú számtani sorozat egymást követő tagjai, ahol a sorozat első tagja $' . round2($start, 0) . '$.'; $page[] = 'Péter ' . NumText($years) . ' év alatt összesen $' . $years . '\\cdot12=' . $months . '$ fizetést kap.'; $page[] = 'Ez azt jelenti, hogy a számtani sorozat első $' . $months . '$ tagjának összegét kell kiszámolni.'; $page[] = '$$S_{' . $months . '}=\\frac{2\\cdot' . round2($start, 0) . '+' . strval($months - 1) . '\\cdot' . round2($increase, 0) . '}{2}\\cdot' . $months . '=' . round2($sum1, 0) . '\\,\\text{Ft}$$'; $page[] = 'Tehát ha Péter az I. ajánlatot választja, összesen $' . round2($sum1, 0) . '\\,\\text{Ft}$-ot kap.'; $hints[] = $page; $page = []; $ratio = 1 + $percent / 100; $sum2 = round1($start * (pow($ratio, $months) - 1) / ($ratio - 1)); $page[] = 'Az II. ajánlatban Péter havi fizetései egy $' . round2($ratio, 2) . '$ hányadosú mértani sorozat egymást követő tagjai, ahol a sorozat első tagja $' . round2($start, 0) . '$.'; $page[] = 'Az összjövedelem kiszámításához itt is a sorozat első $' . $months . '$ tagjának összegét kell meghatározni.'; $page[] = '$$S_{' . $months . '}\'=' . round2($start, 0) . '\\cdot\\frac{' . round2($ratio, 2) . '^{' . $months . '}-1}{' . round2($ratio, 2) . '-1}\\approx' . round2($sum2, 0) . '\\,\\text{Ft}$$'; $page[] = 'Tehát ha Péter a II. ajánlatot választja, összesen $' . round2($sum2, 0) . '\\,\\text{Ft}$-ot kap.'; $page[] = 'Mivel $' . round2($sum1, 0) . ($sum1 > $sum2 ? '>' : '<') . round2($sum2, 0) . '$, ezért Péternek ' . ($sum1 > $sum2 ? 'az' : 'a') . ' <span class="label label-success">' . ($sum1 > $sum2 ? 'I.' : 'II.') . ' ajánlatot</span> célszerű választani.'; $correct = $sum1 > $sum2 ? 0 : 1; $hints[] = $page; return array($hints, $correct); }
function Generate($level) { $AC = rand($level, 2 * $level); $BC = rand($level, 2 * $level); if ($AC == $BC && rand(1, 3) < 3) { while ($AC == $BC) { $BC = rand($level, 2 * $level); } } // // Original exercise // $AC = 6; // $BC = 8; $question = 'Az $ABC$ derékszögű háromszög $AC$ befogója $' . $AC . '$ cm, $BC$ befogója $' . $BC . '$ cm hosszú. Számítsa ki az $ABC$ háromszög hegyesszögeinek nagyságát legalább két tizedesjegy pontossággal!'; $alpha = toDeg(atan($AC / $BC)); $beta = toDeg(atan($BC / $AC)); $correct = array(round1($alpha), round1($beta)); $labels = array('$\\alpha$', '$\\beta$'); $solution = '$\\alpha=' . round2($alpha) . '°$ és $\\beta=' . round2($beta) . '°$.'; $hints[][] = 'Rajzoljunk egy derékszögű háromszöget:' . $this->Triangle(); $hints[][] = 'Tudjuk, hogy az $\\textcolor{blue}{AC}$ befogó $' . $AC . '$ cm hosszú:' . $this->Triangle(['AC'], [$AC], ['blue']); $hints[][] = 'Tudjuk, hogy az $\\textcolor{green}{BC}$ befogó $' . $BC . '$ cm hosszú:' . $this->Triangle(['AC', 'BC'], [$AC, $BC], ['blue', 'green']); $page[] = 'Tudjuk, hogy az $\\alpha$ szög <b>tangense</b> egyenlő a távolabbi és a közelebbi befogó hányadosával:' . '$$\\tan\\alpha=\\frac{\\textcolor{blue}{AC}}{\\textcolor{green}{BC}}=' . '\\frac{\\textcolor{blue}{' . $AC . '}}{\\textcolor{green}{' . $BC . '}}' . '$$'; $page[] = 'Az $\\alpha$ szöget megkapjuk, ha a hányados <b>arkusz tangensét</b> vesszük (ami a tangens függvény inverze), és az eredményt két tizedesjegyre kerekítjük:$$\\alpha=\\arctan\\frac{\\textcolor{blue}{' . $AC . '}}{\\textcolor{green}{' . $BC . '}}\\approx' . round2($alpha) . '°$$'; $page[] = '<b>Megjegyzés</b>: az eredményt a következőképpen lehet kiszámolni számológéppel: <ol> <li>Állítsuk be a gépet <b>DEG</b> módba (ha még nem tettük):<br /><kbd>MODE</kbd> <kbd>DEG</kbd></li> <li>Az arkusz tangenst a <b>tan<sup>-1</sup></b> gomb segítségével lehet kiszámolni:<br />' . '<kbd>' . $AC . '</kbd> <kbd>÷</kbd> <kbd>' . $BC . '</kbd> <kbd>=</kbd> <kbd>Shift</kbd> <kbd>tan<sup>-1</sup></kbd> <kbd>=</kbd></li> </ol>'; $page[] = 'Tehát az $\\alpha$ szög <span class="label label-success">$' . round2($alpha) . '°$</span>.'; $hints[] = $page; $page = []; $page[] = 'Mivel a háromszög belső szögeinek összege $180°$, ezért a $\\beta$ szöget már könnyen ki lehet számolni:$$\\beta=180°-90°-' . round2($alpha) . '°$$'; $page[] = 'Tehát a $\\beta$ szög <span class="label label-success">$' . round2($beta) . '°$</span>.'; $hints[] = $page; return array('question' => $question, 'correct' => $correct, 'solution' => $solution, 'hints' => $hints, 'labels' => $labels, 'type' => 'array'); }
function filelist($phpvars, $page) { global $FilesPerPage, $TimeZoneCorrection; $cnt = count($phpvars['files']); $pagecount = pagecount($cnt, $FilesPerPage); if ($page > $pagecount) { $page = $pagecount; } if ($page < 1) { $page = 1; } echo '<div class = "block"><center>Files for downloading</center><br>'; echo '<table width="100%">'; echo '<tr><td colspan="7"></td><td>name</td><td width="50" align="right">age</td><td width="60" align="right">total</td></tr>'; foreach (array_slice($phpvars['files'], ($page - 1) * $FilesPerPage, $FilesPerPage) as $cur_queued) { $paused = $cur_queued['Paused']; if ($paused) { echo '<tr class="pausedgroup">'; } else { echo '<tr class="unpausedgroup">'; } echo '<td width="10"><a href="javascript:updatestatus(\'status.php?action=filedelete&offset=0&id=' . $cur_queued['ID'] . '\')"><IMG src=images/cancel.gif width=15 height=15 alt="remove file" title="remove file"></a></td>'; echo '<td width="10"><a href="javascript:updatestatus(\'status.php?action=filemovetop&offset=0&id=' . $cur_queued['ID'] . '\')"><IMG src=images/first.gif width=15 height=15 alt="move file to top in queue" title="move file to top in queue"></a></td>'; echo '<td width="10"><a href="javascript:updatestatus(\'status.php?action=filemoveoffset&offset=-1&id=' . $cur_queued['ID'] . '\')"><IMG src=images/up.gif width=15 height=15 alt="move file up" title="move file up"></a></td>'; echo '<td width="10"><a href="javascript:updatestatus(\'status.php?action=filemoveoffset&offset=1&id=' . $cur_queued['ID'] . '\')"><IMG src=images/down.gif width=15 height=15 alt="move file down" title="move file down"></a></td>'; echo '<td width="10"><a href="javascript:updatestatus(\'status.php?action=filemovebottom&offset=0&id=' . $cur_queued['ID'] . '\')"><IMG src=images/last.gif width=15 height=15 alt="move file to bottom in queue" title="move file to bottom in queue"></a></td>'; echo '<td width="10"><a href="javascript:updatestatus(\'status.php?action=filepause&offset=0&id=' . $cur_queued['ID'] . '\')"><IMG src=images/pause.gif width=15 height=15 alt="pause file" title="pause file"></a></td>'; echo '<td width="10"><a href="javascript:updatestatus(\'status.php?action=fileresume&offset=0&id=' . $cur_queued['ID'] . '\')"><IMG src=images/resume.gif width=15 height=15 alt="resume file" title="resume file"></a></td>'; echo "<td>" . namereplace($cur_queued['NZBNicename']) . "/" . namereplace($cur_queued['Filename']) . "</td>"; echo '<td align="right">' . formatAge($cur_queued['PostTime'] + $TimeZoneCorrection * 60 * 60) . '</td>'; echo "<td align=right>" . round1($cur_queued['FileSizeLo'] / 1024 / 1024) . " MB</td>"; echo '</tr>'; } echo '</table>'; if ($cnt > $FilesPerPage) { pagelist($cnt, $page, $FilesPerPage, 'page'); } echo '</div>'; }
function round2($num, $digits = 2) { $num = round1($num, $digits); $digits_try = 0; $num_try = round1($num, $digits_try); while ($num != $num_try) { // elinimate 0-s at end $digits_try++; $num_try = round1($num, $digits_try); } $num = number_format($num, $digits_try, ',', '\\,'); return $num; }
function filelist($phpvars, $page) { global $FilesPerPage; $cnt = count($phpvars['files']); $pagecount = pagecount($cnt, $FilesPerPage); if ($page > $pagecount) { $page = $pagecount; } if ($page < 1) { $page = 1; } echo '<div class = "block"><center>Files for downloading</center><br>'; echo '<table width="100%">'; echo '<tr><td colspan="7">name</td><td align="right">total</td></tr>'; foreach (array_slice($phpvars['files'], ($page - 1) * $FilesPerPage, $FilesPerPage) as $cur_queued) { $paused = $cur_queued['Paused']; echo '<tr><td colspan="8" width="100%"><table class="tableline" width="100%"><tr><td></td></tr></table></td></tr>'; echo $paused ? '<tr class="pausedgroup">' : '<tr class="unpausedgroup">'; echo '<td width="1"><a href="?action=filedelete&offset=0&id=' . $cur_queued['ID'] . '"><IMG src=images/cancel.gif width=15 height=15 alt="remove file" title="remove file"></a></td>'; echo '<td width="1"><a href="?action=filemovetop&offset=0&id=' . $cur_queued['ID'] . '"><IMG src=images/first.gif width=15 height=15 alt="move file to top in queue" title="move file to top in queue"></a></td>'; echo '<td width="1"><a href="?action=filemoveoffset&offset=-1&id=' . $cur_queued['ID'] . '"><IMG src=images/up.gif width=15 height=15 alt="move file up" title="move file up"></a></td>'; echo '<td width="1"><a href="?action=filemoveoffset&offset=1&id=' . $cur_queued['ID'] . '"><IMG src=images/down.gif width=15 height=15 alt="move file down" title="move file down"></a></td>'; echo '<td width="1"><a href="?action=filemovebottom&offset=0&id=' . $cur_queued['ID'] . '"><IMG src=images/last.gif width=15 height=15 alt="move file to bottom in queue" title="move file to bottom in queue"></a></td>'; echo '<td width="1"><a href="?action=filepause&offset=0&id=' . $cur_queued['ID'] . '"><IMG src=images/pause.gif width=15 height=15 alt="pause file" title="pause file"></a></td>'; echo '<td width="1"><a href="?action=fileresume&offset=0&id=' . $cur_queued['ID'] . '"><IMG src=images/resume.gif width=15 height=15 alt="resume file" title="resume file"></a></td>'; echo '<td align="right" width="100%">' . round1($cur_queued['FileSizeLo'] / 1024 / 1024) . ' MB</td>'; echo '</tr>'; echo $paused ? '<tr class="pausedgroup">' : '<tr class="unpausedgroup">'; echo '<td colspan="8">' . namereplace($cur_queued['NZBNicename']) . '/' . namereplace($cur_queued['Filename']) . '</td>'; echo '</tr>'; } echo '</table>'; if ($cnt > $FilesPerPage) { pagelist($cnt, $page, $FilesPerPage, 'page'); } echo '</div><br>'; }
function formatSizeMB($MB) { if ($MB > 10240) { return round1($MB / 1024.0) . ' GB'; } else { if ($MB > 1024) { return round2($MB / 1024.0) . ' GB'; } else { return round2($MB) . ' MB'; } } }