Rekensommen
Ik zit met een klein probleempje:
Ik wil graag een som genereren, waarbij je twee willekeurige getallen tussen -10 en 10 met elkaar vermenigvuldigen, delen, optellen of aftrekken (de 0 mag niet voorkomen en minstens 1 van de 2 getallen moet positief zijn).
Nu moet er ook willekeurig gekozen worden tussen vermenigvuldigen, delen, optellen en aftrekken. Ik heb dat op de volgende manier gedaan:
$getal1 = rand(-10, 10);
$getal2 = rand(-10, 10);
while ($getal1 == 0 or $getal2 == 0 or ($getal1 > 0 and $getal2 > 0)) {
$getal1 = rand(-10, 10);
$getal2 = rand(-10, 10);
}
$operator = array("*", ":", "+", "-");
$rand = array_rand($operator, 1);
echo $getal1 . ' ' . $operator[$rand] . ' ' . $getal2 . ' ' . "=";
Nu komt bovenstaande gewoon goed uit de verf (er staat bijvoorbeeld: -2 * 3 = )
Maar nu wil ik controleren of het antwoord van de websitebezoeker goed is.
Daar heb je de uitkomst van de som voor nodig, maar dat krijg ik niet voor elkaar. Het wordt als tekst gelezen denk ik...
Dit heb ik met het onderstaande geprobeerd, maar als ik dan $uitkomst echo, dan krijg ik gewoon, om bij het voorbeeld te blijven, -2*3 terug, terwijl ik -6 wil terugkrijgen.
$uitkomst = $getal1 . $operator[$rand] . $getal2;
Wie kan mij helpen?
(eerst controleren of de string alleen getallen en operatoren bevat)
Ik kan nu gelukkig weer verder.
Toevoeging op 14/11/2012 20:22:13:
Helaas werkt deze code niet voor alle mogelijke sommen...
Ik weet niet precies hoe, maar ik krijg af en toe de melding dat $uitkomst undefined is.
Ik heb het vermoeden dat het bij alle delingen zo is en bij het aftrekken van een negatief getal.
Toevoeging op 14/11/2012 20:24:08:
Bij een deling gaat het dus om ':' en bij het aftrekken van een negatief getal om '- -'...
Toevoeging op 14/11/2012 20:39:48:
php herkent ':' niet als delen, maar '/' wel. Dat probleem is dus opgelost.
Nu de '--' nog...
Toevoeging op 14/11/2012 20:46:50:
de '--' is ook opgelost. Php herkent de som alleen als de minnen niet direct naast elkaar staan, er moet dus een spatie tussen.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$som = $_GET['som'];
$som = str_replace(":", " / ", $som);
$som = str_replace("-", " - ", $som);
// op eind: dubbele spaties weg
$som = str_replace(" ", " ", $som);
echo eval($som);
?>
$som = $_GET['som'];
$som = str_replace(":", " / ", $som);
$som = str_replace("-", " - ", $som);
// op eind: dubbele spaties weg
$som = str_replace(" ", " ", $som);
echo eval($som);
?>
Beiden, bedankt voor jullie hulp en medewerking!