Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Średnia ważona w PHP :)
Babcia@Stefa
post
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


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

Ten post edytował Babcia@Stefa 28.04.2008, 15:04:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Babcia@Stefa
post
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


Wielkie dzięki Cezar, właśnie miałem z http://www.matematyka.pisz.pl/strona/1026.html napisać własne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Dzięki za Twoje chęci (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zaraz Ci dam "pomógł" tylko odpalę ten kod (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)

@edit
Ładnie działa, zaraz napiszę do tego klasę i ją udostępnie dla forum. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Wszystkim powyżej należy się "pomógł".

@edit
Update klasy:

  1. <?php
  2. // Autor: Babcia@Stefa
  3. // Wielkie podziękowania dla Cezar708
  4. // Wersja: 1.1
  5. class MatchSW
  6. {
  7. // V = oceny (typ: array), W = wagi (typ: array)
  8. protected $V, $W; 
  9. // 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)
  10. public $Owner, $Result;
  11.  
  12. public function SetOwner($_ATTR)
  13. {
  14. // ustawia właściciela ocen - tak na wszelki wypadek można wrzucać jakiś identyfikator
  15. return $this -> Owner = $_ATTR;
  16. }
  17.  
  18. public function ThrowNew($v, $w)
  19. {
  20. $w = (int)str_replace(',', '.', $w); // zamienia przecinki na kropki aby nie powstał string... i konwertuje do int
  21. $v = (int)str_replace(',', '.', $v); // to samo co u góry ^^,
  22. if(is_numeric($v) AND is_numeric($w))
  23. {
  24. // wrzuca elementy do tablic
  25. $this->V[] = $v;
  26. $this->W[] = $w;
  27. return true;
  28. }
  29. }
  30.  
  31. public function GetAll()
  32. {
  33. // jeśli brak wyniki :)
  34. if(!$this->Result)
  35. $this->GetResult();
  36.  
  37. foreach ($this->V as $key => $value)
  38. {
  39. // zapisuje do jednej tablicy
  40. $Ratings[] = array('rating' => $value, 'weight' => $this->W[$key]);
  41. }
  42.  
  43. // zwraca wyniki
  44. return array('result' => $this->Result, 'ratings' => $Ratings);
  45. }
  46.  
  47. public function GetResult()
  48. {
  49. // Wielkie dzięki dla Cezar708
  50.  
  51. // zabezpieczenie przed errorem wywalanym przez pętle
  52. if(count($this->V) > 0 AND count($this->W) > 0)
  53. {
  54. // zmienne
  55. $oceny = $this->V;
  56. $wagi = $this->W;
  57. $sumaWazona = 0;
  58.  
  59. // obliczenia
  60. foreach( $oceny as $klucz => $ocena ){
  61. $sumaWazona += $ocena * $wagi[$klucz];
  62. $sumaWag += $wagi[$klucz];
  63. }
  64.  
  65. $wynik = $sumaWazona / $sumaWag;
  66. return $this->Result = $wynik;
  67. }
  68. }
  69. }
  70.  
  71. $jan = new MatchSW();
  72. $jan -> SetOwner('Jan Kowalski'); // ustawia identyfikator/nazwę ucznia na "Jan Kowalski" bez "
  73. $jan -> ThrowNew(5, 5); // dodaje ocenę 5 z wagą 5
  74. $jan -> ThrowNew(5, 4); // dodaje ocenę 5 z wagą 4
  75. $jan -> ThrowNew(5, 4); // dodaje ocenę 5 z wagą 4
  76.  
  77. // pobiera wyniki i zapisuje tablicę wynikową do zmiennej
  78. $results = $jan->GetAll();
  79.  
  80. // tekst do wyświetlenia - tabelka
  81. $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>';
  82. foreach ($results['ratings'] as $key => $value)
  83. {
  84. // przegląda wyniki i generuje tabelkę
  85. $ratings++;
  86. $text .= '<tr><td>' .$value['rating']. '</td><td>' .$value['weight']. '</td></tr>';
  87. }
  88. // zakańcza tabelkę
  89. $text .= '<tr><td colspan="2">Razem ' .$ratings. ' ocen, z średnia ' .$results['result']. '</td></tr>';
  90. // wyświetla wynik
  91. echo $text;
  92. ?>


Dziękuję, Babcia@Stefa

Ten post edytował Babcia@Stefa 28.04.2008, 15:56:12
Go to the top of the page
+Quote Post

Posty w temacie


Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 02:48