Berechung des prozentualen Anteils und Speichern der neuen Stimmanzahlen in der Datei


$gesamt=0; for($i=0; $i<=$#wert; $i++) { if($names[$i] =~ $Formular[1]) { $wert[$i]++; $aktuell=$i; } $gesamt=$gesamt+$wert[$i]; } Zunächst wird der Skalar $gesamt auf 0 gesetzt.
Anschließend wird eine Schleife sooft durchlaufen, bis der letzte Wert des Arrays @Wert erreicht ist. $#wert ermittelt die Anzahl der Array-Elemente. In dieser Schleife wird mit if($names[$i] =~ $Formular[1]) geprüft, ob der Teamname an $i-ter Stelle des Arrays @names im aus dem HTML-Formular übertragenen Teamnamen enthalten ist, wobei dieser im Array @Formular an Position 1 gespeichert wurde.
Wenn dies zutrifft, also die Teamnamen identisch sind, wird der Stimmanzahl dieses Teams, die in @wert an der Stelle ist, deren Wert $i gerade hat, um 1 erhöht. Ferner wird der Stand der Laufvariablen $i im Skalar $aktuell gespeichert, da hierauf später noch mal zurückgegriffen wird.
Dieser Teil des Scriptes ist logischerweise nur im Abstimm-Script enthalten.

Außerdem wird in der Schleife die Anzahl der Gesamtstimmen berechnet. Dies geschieht mit $gesamt=$gesamt+$wert[$i], wobei der Gesamtanzahl die Anzahl der Stimmen an $i-ter Stelle von @wert hinzuaddiert werden.

open(WERTS, ">anzahl.txt"); for($i=0; $i<=$#wert; $i++) { if($i==$aktuell) { print WERTS "$wert[$i]\n"; } else { print WERTS "$wert[$i]"; } } close(WERTS); Mit open(WERTS, ">anzahl.txt") wird die Datei anzahl.txt zum Schreiben geöffnet. In einer Schleife werden alle $werte in die Datei geschrieben, wobei dem $aktuellen Wert noch ein Zeilenumbruch hinzugefügt werden muss. (if($i==$aktuell)...)
Dabei wird erneut eine Laufvariable verwendet, die solange um 1 erhöht wird, bis die Anzahl der der in @wert gespeicherten Daten überschritten ist. Es wird jeweils der $i-te $wert[$i] der Datei hinzugefügt.
Zum Schluss wird die Datei wieder geschlossen. (close(WERTS)) $rund=0; $top=0; for($i=0;$i<=$#wert;$i++) { if($gesamt!=0) { $pro[$i]=int(($wert[$i]/$gesamt)*100); } else { $pro[$i]=0; } if($pro[$i]>$pro[$top]) { $top=$i; } $rund=$rund+$pro[$i]; } Hier werden als erstes die Skalare $rund und $top auf 0 gesetzt.
Danach ist erneut eine Schleife definiert, die alle $#werte überprüft, wobei erneut die Laufvariable $i verwendet wird.
In dieser Schleife wird anfangs geprüft, ob überhaupt Stimmen abgegeben worden sind, bzw. ob die Gesamtanzahl der Stimmen ungleich 0 ist: if($gesamt!=0)... Ist dies der Fall, so wird mit $pro[$i]=int(($wert[$i]/$gesamt)*100) im Array @pro an $i-ter Stelle der Prozentsatz des $wert[$i] an $i-ter Stelle gespeichert, wobei beim Prozentwert die Nachkommastellen abgeschnitten werden: int(($wert[$i]/$gesamt)*100)
Falls noch keine Stimme abgegeben wurde, werden alle $prozentwerte auf 0 gesetzt.
Da durch das Abschneiden ein Gesamt-Prozentwert von <100 rauskommen kann, wird dies zur späteren Überprüfung in dem Skalar $rund gespeichert. Ferner wird hierfür die Array-Element-Nummer mit dem höchsten Prozentwert ermittelt und in $top gespeichert: Mit if($pro[$i]>$pro[$top]) wird überprüft, ob der Prozentwert an $i-ter Stelle größer ist als der an der an der $top-ten Stelle im Array @pro. Trifft dies zu, so wird $top der Wert von $i zugewiesen. if(($rund!=100)&&($rund!=0)) { $pro[$top]=$pro[$top]+(100-$rund); } Zunächst wird überprüft, ob der Skalar $rund (s. oben) nicht den Wert 100 und den Wert 0 hat: if(($rund!=100)&&($rund!=0))...
Trifft dies zu, so wird dem größten Prozentwert, dessen Array-Element-Nummer im Skalar $top gepeichert wurde der restliche Prozentbetrag hinzuaddiert: $pro[$top]=$pro[$top]+(100-$rund)
<< Inhalt >>


©opyrights @ Nils Heuermann & Stefan Dyck 2000