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>&divide;</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' => '$°$']);
 }
Exemple #3
0
 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);
 }
Exemple #4
0
 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));
    }
Exemple #7
0
 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);
 }
Exemple #9
0
 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>&divide;</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));
    }
Exemple #11
0
 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>&divide;</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');
    }
Exemple #13
0
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;
}
Exemple #15
0
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>';
}
Exemple #16
0
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';
        }
    }
}