Preise in Schleifen ausgeben

Benks

Grünschnabel
hab jetzt durch Krankheit ein paar Tage im Unterricht gefehlt und wir haben da so n assi Lehrer -.-

der hat mir jetzt bis Freitag Zeit gegeben, mir selbst beizubringen über Google und Co wie ich in PHP eine zählergesteuerte oder bedingte Schleife benutze um diverse Preise auszugeben ($min - $max) wobei die Spanne zwischen min+max nicht mehr sein als 39.

Nach gefühlten 8 Std Suche über Suche bin ich nun langsam etwas verzweifelt -.-

Jemand ne Idee oder Denkanstoß für mich bitte ?

greetz
 
Hi und Willkommen bei tutorials.de,

bitte beschreib die Aufgabe genauer.

Was habt ihr denn als Letztes vorm Kranksein gelernt?


Zum Forum: Es ware schön, in Zukunft aussagekräftige Titel zu verwenden
und Beleidigungen irgendwelcher Personen zu vermeiden.
 
ah ok ... sorry für den titel ... also zur aufgabe, ich tipp einfach mal was ich bekommen habe =

"Name: Spanne
IN: array $P (Float)
Out: $Diff (Float)
$min = min($Preis)
$max = max($Peis)
Rückgabe $max - $min

function Spanne ($P)

$max=$P[0]
$min=$P[0]
for($I=1, $I>count($P), $Float)
{
if($min<$P[$I])
{
$min=$P[$I];
}
if($max<$P[$I])
{
$max=$P[$I];
}
}
{
return $max - $min;
}

daraus mit einer zählergesteuerte oder bedingte Schleife ein kleines Skript erstellen."

das ist alles was ich bekommen habe ... schönes ding.

greetz
Benks

ps: danke für die fixe antwort
 
Naja ganz generell sieht eien Zähler gesteuerte Schleife in PHP so aus:
PHP:
for($startwert;$bedingung;$Zaehler)
{
  // Weiterer Code
}

bedingte Schleife sieht hingegen so aus
PHP:
while($Bedingung)
{
  //Weiterer Code
}

Geneauere Informationen findeste du hier:
http://de3.php.net/manual/de/control-structures.while.php
http://de3.php.net/manual/de/control-structures.for.php

Einige nette und gut erklärte Beispiele hier:
http://www.schattenbaum.net/php/for.php
http://www.schattenbaum.net/php/while.php

Mit freundlichen Grüßen
Leon Bergmann
 
Danke Sky,

ja die Seiten hatte ich auch schon gefunden, aber ich bekomm des einfach nicht hin mit der Spanne zwischen 2 Zahlen, z.B. is die kleinste Zahl 107 - mit der Spanne dazu von 39 - muss dann die maxzahl 146 sein.
Wahrscheinlich check ich es einfach nicht -.-
Aber danke für die Hilfe.

greetz
Benks
 
Also, so wie ich das verstehe, ist das "nur" eine Kombination
aus Ermittlung vom Kleinsten und vom Größten (Arrayelement).

Mal anders gefragt: Würdest du es schaffen, das kleinste Element aus dem Array zu finden?
Idee zur Vorgehensweise:
Du machst eben eine Funktion, die ein Array übergeben bekommt.

In der Funktion hast du eine Variable $min, zum Speichern des kleinsten Elements.
Jetzt gehst du mit einer for-Schleife jedes Arrayelement durch
und prüfst bei jedem, ob es kleiner als min ist.
Wenn du eins findest, das kleiner als das aktuelle min ist,
speicherst du diesen neuen kleinsten Wert in min.
Am Schluss sollte dann der Kleinste insgesamt übrigbleiben.

zB.min ist gerade 7, und die Arrayelemente sind 8 4 9.
8 ist nicht kleiner als min (7), also weiter.
4 ist kleiner als min 7, also min=4
9 ist nicht kleiner als min (4), also weiter.
Fertig.

Zwei Stolpersteine:

a)min braucht auch irgendeinen Startwert.
Wenn man einfach irgendeine Zahl nimmt, zB. 0,
kann es zu falschen Ergebnissen kommen.
Mit dem 8 4 9 von oben und 0 als Startwert:
8 ist nicht kleiner als min (0), also weiter.
4 ist kleiner als min (0), also weiter.
9 ist nicht kleiner als min (0), also weiter.
Fertig: min ist 0
Und das stimmt dann eben nicht.
0 ist nicht das kleinste Element, weil 0 im Array gar nicht drin ist.
Der Startwert von min muss ein Arrayelement sein, zB. das Erste, also [0]
PHP:
$min = $arr[0];
So ungefähr, je nach Variablennamen.

b)
Wenn das Array leer ist, also 0 Elemente hat, macht die Codezeile oben Probleme.
Also ganz am Anfang prüfen, ob das Array überhaupt einen Inhalt hat.
Sonst zB. -1 als Fehlerwert zurückgeben.

Fragen natürlich willkommen :)
Wenn du diese Minimalsuchfunktion geschafft hast,
hast du schon 80% von der Spannenberechnung.
 
Momentan verstehe ich die konkrete Aufgabe nicht so ganz, also so wie ich dich bis jetzt verstanden habe sollst du eine Funktion schreiben die dir die Differenz zwischen zwei Zahlen ausgibt solange sie nicht größer als 39 ist.

Ich habe mal ganz schnell was gecoded was meiner Meinung nach das erfüllt was du beschrieben hast.

PHP:
function differenz($value)
{
	// prüft ob die Übergebenen Variable ein array ist
	if(!is_array($value))
	{
		return -1;
	}
	// sortierung des array vom niedrigsten zum höchsten Wert
	arsort($value);
	// Speichern der Verte 
	$min	= $value[0];
	$max	= $value[1];
	// Berechnung des Ergebniss
	$result	= $max - $min;
	if($result > 39)
	{
		return '> 39';
	} 
	else
	{
		return $result;
	}
}

P.S. Allerdings habe ich keine Schleifen verwendet da es auch ohne geht.

Mit freundlichen Grüßen
Leon Bergmann
 
also danke mal für die Antworten,
@Sky: na nicht ganz, die Differenz soll nicht kleiner als 39 sein, sondern immer 39 zwischen den Zahlen.

aber danke ich denke ich habs gleich...hab ja noch gefühlte 8 Std bis ich wieder in der Schule steh und erste Ergebnisse zeigen soll ;)

@sheel: auch dir danke ;) hat schon weitergeholfen...

glaub ich frag ma den Lehrer ob es sein Ernst ist, den wenigen Informationen die er mir da gegeben hat.

greetz
 
Du bekommst ein Array mit Zahlen, gehst jede Zahl durch, setzt min und max auf die erste Zahl im Array - hast schon richtig angefangen. Gehst dann mit einer Schleife das ganze Array durch und vergleichst das jeweilige Element mit dem min und max, je nachdem ob es kleiner als min ist, dann setzt du min neu respektive wenn größer als max, dann max neusetzen. Hast die Vergleichsoperatoren falsch gesetzt.

Wenn die Schleife fertig ist, dann ist die Spanne max-min und max+min<39 (? keine Ahnung wofür das gut sein soll). Um diese 39 musst du dich gar nicht kümmern, das ist bei der Eingabe gegeben, dass am Ende max+min<39.
 
Zurück