Hallo,
ich habe ein folgendes Problem bei der Erstellung von Matheaufgaben. Ich möchte vorerst einfache Aufgaben erstellen, wo zwei Zahlen untereinander stehen und man dann das Ergebnis hinschreiben soll. Die Hürde hierbei ist, das ein Zahlenpaar nie größer 9 sein dürfen. Sprich 8 und 3 wären falsch, wohingegen 8 und 1 funktionieren darf. Bei zweistelligen Zahlen dürfen die untereinanderstehenden einer und Zehnerstellen auch jeweils nicht über 9 kommen. Also würde hier 21 und 18 gehen, aber 21 und 93 bzw 21 und 39 nicht gehen.
Der unten stehende Code funktioniert bei einer Abfrage. Wenn ich aber die Funktion untereinader in einer FOR-Schleife aufrufe, dann werden die Restrictionen nicht eingehalten und ergibt mir Zahlen aus, die es nicht soll. Woran kann das liegen?
Gruß, Kalito
ich habe ein folgendes Problem bei der Erstellung von Matheaufgaben. Ich möchte vorerst einfache Aufgaben erstellen, wo zwei Zahlen untereinander stehen und man dann das Ergebnis hinschreiben soll. Die Hürde hierbei ist, das ein Zahlenpaar nie größer 9 sein dürfen. Sprich 8 und 3 wären falsch, wohingegen 8 und 1 funktionieren darf. Bei zweistelligen Zahlen dürfen die untereinanderstehenden einer und Zehnerstellen auch jeweils nicht über 9 kommen. Also würde hier 21 und 18 gehen, aber 21 und 93 bzw 21 und 39 nicht gehen.
Der unten stehende Code funktioniert bei einer Abfrage. Wenn ich aber die Funktion untereinader in einer FOR-Schleife aufrufe, dann werden die Restrictionen nicht eingehalten und ergibt mir Zahlen aus, die es nicht soll. Woran kann das liegen?
Gruß, Kalito
PHP:
class math {
private $anzahl = "2";
private $check = false;
private $pool = "1234567890";
private $zahl1;
private $zahl2;
private $zahlarray1;
private $zahlarray2;
private $zeichen = "plus";
public function __construct(){}
public function untereinander(){
$this->generiereZahlarray();
echo "<br/>Zahlarray1: ";
var_dump($this->zahlarray1);
echo "<br/>Zahl1: ".$this->zahl1;
echo "<br/>Zahlarray2: ";
var_dump($this->zahlarray2);
echo "<br/>Zahl2: ".$this->zahl2;
echo"<br/>Summe: ".($this->zahl1 + $this->zahl2);
}
private function generiereZahlarray(){
for($i=0;$i<$this->anzahl;$i++){
do{
$this->zahlarray1[$i] = $this->random();
$this->zahlarray2[$i] = $this->random();
$this->check = $this->check();
}while(!$this->check);
}
$this->ArrayToString();
}
//Prüfung des Zeichen zur Auswahl der checkfunktion
private function check(){
switch ($this->zeichen){
case "plus": return $this->checkAddition(); break;
}
}
private function checkAddition(){
return ((end($this->zahlarray1) + end($this->zahlarray2)) <10) ? true : false;
}
private function ArrayToString(){
$this->zahl1 = implode("", $this->zahlarray1);
$this->zahl2 = implode("", $this->zahlarray2);
}
// Zufallsgenerierung einer Zahl
private function random(){
return $this->pool{rand(0, strlen($this->pool)-1)};
}
}