PHP schleife

Ja leider ist das wirklich die Aufgabe. Ne Freundin von mir, macht Abi. Da soll die nen Code in Java schreiben. Da dachte ich mir in PHP bekomme ich das Locker hin.
Dummerweise, habe ich das grosse. und ganze vor Augen aber ich hänge an dieser bestimmten Stelle, wo man einer Türe diesen „Status“ auf oder zu hängen kann. Hier mal pi mal Daumen, wie die Originale Java Aufgabe lautet.
Ein Knast hat 100 Zellen, diese habe 100 Türen. Im ersten Durchgang sollen alle Türen geöffnet werden.
Im 2. Durchgang der Schleife soll jede xte (weiß nicht mehr welche, ich mein jede 3.) Tür geöffnet werden, wenn diese Türe schon offen ist, soll die Geschlossen werden. Danach kommen noch 1 oder 2 Schleifen mit anderen Zahlen, also jeder Tür y und Tür z.
Dummerweise will ich das jetzt, auch wenn es eigentlich total sinnlos ist, das ganze in PHP lösen. Java kann ich nicht wirklich und will ich auch nicht. Aber mich hat aber der Ehrgeiz gepackt das zu lösen.

So kam meine Frage zustande wie ich den Türen also $i, die Variable „auf“ oder „zu“ anhängen kann

Mfg
 
Hallo Michael,

am einfachsten wäre es hier ein Array zu verwenden. Jedes Element des Array soll ein bool sein, der angibt ob die Tür offen ist.

Also in etwa so (ungetestet):
PHP:
$tuer_offen = array_fill(0, 100, false); // Alle Türen geschlossen
for ($i = 0; $i < 100/2; $i++) {
  $tuer_offen[$i] = !$tuer_offen[$i];
}

foreach ($tuer_offen as $nr => $offen) {
  printf("Tür #%d ist %s.\n", $nr+1, $offen ? "offen" : "geschlossen");
}

Grüße, Matthias
 
Na ja, wenn es um Java geht, denke ich dass dem Lehrer wohl eher so etwas vorschwebt...
PHP:
<?php
class tuer{
	private $geoeffnet=false;
	function __construct(){
	}
	public function get(){
		return $this->geoeffnet;
	}
	public function open(){
		$this->geoeffnet=true;
	}
	public function close(){
		$this->geoeffnet=false;
	}
	public function change(){
		$this->geoeffnet=(($this->geoeffnet)?false:true);
	}
}

class gefaengnis{
	private $count=100;
	private $tuer=array();
	function __construct($anzahl_tueren=null){
		$this->count=((is_numeric($anzahl_tueren))?$anzahl_tueren:$this->count);
		for($count=0;$count<$this->count;$count++){
			$this->tuer[$count]=new tuer();
		}
	}
	public function changeTuer($aufgabe=null,$n=1){
		for($count=-1+$n;$count<count($this->tuer);$count=$count+$n){
			switch($aufgabe){
				case null://switch
				$this->tuer[$count]->change();
				break;
				case true://öffne tür
				$this->tuer[$count]->open();
				break;
				case false:
				$this->tuer[$count]->close();
				break;
			}
		}
	}
	public function __toString(){
		$out='';
		foreach($this->tuer as $key=>$value){
			$out.='Tuer Nr. '.($key+1).' = '.(($value->get())?'geoeffnet':'geschlossen').'<br />';
		}
		return $out;
	}
}


$gefaengnis=new gefaengnis();
$gefaengnis->changeTuer(true,1);
$gefaengnis->changeTuer(null,3);
$gefaengnis->changeTuer(null,5);
//usw
echo $gefaengnis;


Hat spaß gemacht... irgendwie wie knobeln :-)
Kannst ja mal aus Spaß die Musterlösung des Lehrers posten.
 
Zurück