PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Übungsaufgaben


Indyk
12.05.2009, 15:13:02
Manchmal kommt man in Situationen wo man jemanden Übungsaufgaben geben muss / möchte, sei es ein Praktikant oder Schüler oder man möchte selbst sich testen und findet keine. In dem Sinne werde ich hier jetzt ein paar Aufgaben (mit meiner eigenen Lösung die nicht perfekt sein muss) posten.

Aufgabe 1
Erstellen Sie einen Algorithmus für die Funktion holeSonnenstunden(), welche die Sonnenstunden eines Postleitzahlenbreichs aus dem zweidimensionalen Array Sonnenstunden liefert. Der Übergabeparameter ist eine PLZ.

// PLZ, Sonnenstunden
$Sonnenstunden = array(
array(50606, 1200),
array(51491, 1100),
);

Hinweis:

Die Zeilen des Arrays sind nach Postleitzahlen aufsteigend sortiert
Wird die Übergebene PLZ Im Array nicht gefunden, so soll die Sonnenstundenzahl der nächstkleineren PLZ Verwendet werden
Ist die eingegeben PLZ Kleiner als die kleinste im Array vorhandene PLZ, wird -1 zurückgegeben.

Lösung Aufgabe 1 v.1

function holeSonnenstunden($plz)
{
global $Sonnenstunden;

if($plz < $Sonnenstunden[0][0])
{
return -1;
}

foreach($Sonnenstunden as $a)
{
if($a[0] == $plz)
{
return $a[1];
}
}

return holeSonnenstunden($plz-1);
}

Benutzen von global ist kein guter Programmierstyle :)
P.s:
Die Aufgaben und deren Beschreibung sind nicht von mir. Fragen oder andere Lösungsvorschläge würde ich über PM oder anderen thread sehr begrüßen damit dieser hier überschaubar bleibt.

Indyk
12.05.2009, 16:44:41
Aufgabe 2
Erstellen Sie einen Algorithmus zur Ermittlung der Gesamtvergütung in Euro.

Übergabeparameter:

Nennleistung
PLZ
Abweichung von Süden in Grad
Laufzeit
Vergütung je kWh

Beschreibung einer Solaranlage (Beispiel)

Standort: Köln (PLZ 50606)
Jährliche Sonnenstunden: 1.200
Nennleistung bei direkter Südausrichtung: 50.000 kWh/kWp
Ausrichtung: 31 Grad Abweichung von Süden
Anschaffungskosten: 20.000,00 €
Betriebsdauer: 20 Jahre
Vergütung je kWh: 0,45 €

Hinweis:

Die Nennleistung wird nur bei einer Ausrichtung nach Süden und bei 1.800 Std. Sonneneinstrahlung erreicht.
Je Grad Abweichung von der Südausrichtung verändert sich die Nennleistung um 0.5%
Die Nennleistung einer Solaranlage nimmt je Betriebsjahr linear um 2% ab.


Lösung Aufgabe 2 v.1

function verguetung
(
$nennleistung,
$plz,
$abweichung,
$laufzeit,
$verguetung
)
{
// Sonnenstunden für die PLZ holen (siehe Aufgabe 1)
$sonnenstunden = holeSonnenstunden($plz);

//+++ 50.000 bei 1800 Sonnenstunden
if($sonnenstunden < 1800)
{
$p = ($sonnenstunden/1800) * 100;
$nennleistung -= $nennleistung * $p /100;
}
if($sonnenstunden > 1800)
{
$p = ($sonnenstunden/1800) * 100;
$nennleistung += $nennleistung * ($p-100) /100;
}
//---

// pro abweichung 0.5 prozent weniger
if($abweichung > 0)
{
$p = $abweichung * 0.5;
$nennleistung -= $nennleistung * $p/100;
}

// pro jahr 2% weniger
$p = $laufzeit * 2;
$nennleistung -= $nennleistung * $p/100;

$cent = ($nennleistung*$laufzeit)*$verguetung;
$euro = number_format(($cent/100), 2, ',', '.');

return $euro.' &euro;';
}


P.s:
Wie oben stammt die Aufgabe und Beschreibung nicht von mir.