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 basic_division_explanation($dividend, $divisor) { $digits = str_split($dividend); $order = array("első", "második", "harmadik", "negyedik", "ötödik", "hatodik", "hetedik", "nyolcadik", "kilencedik", "tizedik"); // Multiply numbers $remain_prev = 0; $quotient_total = 0; for ($ind = 0; $ind < count($digits); $ind++) { $text = ''; $digit = $digits[$ind]; $dividend_current = 10 * $remain_prev + $digit; $quotient_current = floor($dividend_current / $divisor); $remain_current = $dividend_current % $divisor; $check_current = $quotient_current * $divisor; if ($quotient_total != 0 || $quotient_current != 0) { $quotient_total = $quotient_total * 10 + $quotient_current; } if ($remain_prev == 0) { $text .= 'Írjuk le alulra ' . (in_array($ind, [1, 4]) ? 'az' : 'a') . ' ' . $order[$ind] . ' számjegyet! '; } else { $text .= 'Írjuk ' . The($remain_prev) . ' $' . $remain_prev . '$ mellé ' . (in_array($ind, [1, 4]) ? 'az' : 'a') . ' ' . $order[$ind] . ' számjegyet! '; } if ($quotient_current == 0) { $text .= 'Mivel ' . The($dividend_current) . ' $' . $dividend_current . '$-' . In($dividend_current) . ' nincs meg ' . The($divisor) . ' $' . $divisor . '$, ezért '; if ($quotient_total == 0) { $text .= 'továbbmegyünk: '; } else { $text .= 'leírjuk a $0$-t az eredményhez: '; } } elseif ($divisor > 30) { $dividend_round = round($dividend_current / 10); $divisor_round = round($divisor / 10); $quotient_round = floor($dividend_round / $divisor_round); $check_round = $quotient_round * $divisor; $text .= 'Hányszor van meg ' . The($dividend_current) . ' $' . $dividend_current . '$-' . In($dividend_current) . ' ' . The($divisor) . ' $' . $divisor . '$? A becsléshez kerekítsük tízesekre mind a két számot, majd ' . 'mindkét számot egyszerűsítsük $10$-zel: $\\require{cancel}' . $dividend_round . '0:' . $divisor_round . '0=' . $dividend_round . '\\cancel{0}:' . $divisor_round . '\\cancel{0}=' . '\\textcolor{green}{' . $quotient_round . '}$. Ellenőrzésképp szorozzunk vissza az eredeti osztóval: $\\textcolor{green}{' . $quotient_round . '}\\cdot' . $divisor . '=' . $check_round . '$. Mivel az eredmény ' . ($check_round <= $dividend_current ? 'nem ' : '') . 'nagyobb, mint ' . The($dividend_current) . ' $' . $dividend_current . '$, ezért az eredményhez $' . $quotient_current . '$-' . Dativ($quotient_current) . ' írunk, alulra pedig a maradékot, ami $' . $remain_current . '$, mert $' . $quotient_current . '\\cdot' . $divisor . '=' . $check_current . '$, és $' . $dividend_current . '-' . $check_current . '=' . $remain_current . '$:'; } else { $text .= '$' . $dividend_current . '$-' . In($dividend_current) . ' ' . The($divisor) . ' $' . $divisor . '$ meg van $' . $quotient_current . '$-' . Times($quotient_current) . ', maradék ' . The($remain_current) . ' $' . $remain_current . '$, mert $' . $quotient_current . '\\cdot' . $divisor . '=' . $check_current . '$. Az eredményt jobb ' . 'oldalra írom, a maradékot pedig alulra:'; } $text .= basic_division_generate_equation($dividend, $divisor, $ind); $explanation[] = $text; $remain_prev = $remain_current; } $check = $divisor * $quotient_total; $explanation[] = 'Ellenőrizzük az eredményt úgy, hogy összeszorozzuk ' . The($quotient_total) . ' $' . $quotient_total . '$-' . Dativ($quotient_total) . ' ' . The($divisor) . ' $' . $divisor . '$-' . With($divisor) . '!'; $explanation[] = basic_multiplication_explanation($divisor, $quotient_total); if ($remain_current != 0) { $explanation[] = 'Végül adjuk hozzá a kapott eredményhez a maradékot:' . basic_addition_generate_equation(array($check, $remain_current)); $explanation[] = basic_addition_explanation(array($check, $remain_current)); } return $explanation; }