Witam, w szkole poproszono mnie abym napisał aplikację "Internetowy dzienniczek ucznia" dla szkoły...
Jednak nie mogę znaleźć rozwiązania w Google które pokaże mi jak obliczać średnią ocen z wagą.
Dziękuję, Babcia@Stefa
<?php // Autor: Babcia@Stefa // Wielkie podziękowania dla Cezar708 // Wersja: 1.1 class MatchSW { // V = oceny (typ: array), W = wagi (typ: array) protected $V, $W; // Result: wynik końcowy po wywołaniu funkcji GetResult zapisuje się do tej zmiennej, to znaczy nie trzeba ponownie wywoływać tej funkcji aby zdobyć wynik. Owner: Nazwa/identyfikator właściciela (typ: mixed) public $Owner, $Result; public function SetOwner($_ATTR) { // ustawia właściciela ocen - tak na wszelki wypadek można wrzucać jakiś identyfikator return $this -> Owner = $_ATTR; } public function ThrowNew($v, $w) { $w = (int)str_replace(',', '.', $w); // zamienia przecinki na kropki aby nie powstał string... i konwertuje do int { // wrzuca elementy do tablic $this->V[] = $v; $this->W[] = $w; return true; } } public function GetAll() { // jeśli brak wyniki :) if(!$this->Result) $this->GetResult(); foreach ($this->V as $key => $value) { // zapisuje do jednej tablicy } // zwraca wyniki } public function GetResult() { // Wielkie dzięki dla Cezar708 // zabezpieczenie przed errorem wywalanym przez pętle { // zmienne $oceny = $this->V; $wagi = $this->W; $sumaWazona = 0; // obliczenia foreach( $oceny as $klucz => $ocena ){ $sumaWazona += $ocena * $wagi[$klucz]; $sumaWag += $wagi[$klucz]; } $wynik = $sumaWazona / $sumaWag; return $this->Result = $wynik; } } } $jan = new MatchSW(); $jan -> SetOwner('Jan Kowalski'); // ustawia identyfikator/nazwę ucznia na "Jan Kowalski" bez " $jan -> ThrowNew(5, 5); // dodaje ocenę 5 z wagą 5 $jan -> ThrowNew(5, 4); // dodaje ocenę 5 z wagą 4 $jan -> ThrowNew(5, 4); // dodaje ocenę 5 z wagą 4 // pobiera wyniki i zapisuje tablicę wynikową do zmiennej $results = $jan->GetAll(); // tekst do wyświetlenia - tabelka $text = '<table border="1" cellpadding="0" cellspacing="0"><tr><td colspan="2">Oceny ucznia "' .$jan->Owner. '"</td></tr><tr><td>Ocena</td><td>Waga</td></tr>'; foreach ($results['ratings'] as $key => $value) { // przegląda wyniki i generuje tabelkę $ratings++; $text .= '<tr><td>' .$value['rating']. '</td><td>' .$value['weight']. '</td></tr>'; } // zakańcza tabelkę $text .= '<tr><td colspan="2">Razem ' .$ratings. ' ocen, z średnia ' .$results['result']. '</td></tr>'; // wyświetla wynik ?>