Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [PHP] Średnia ważona w PHP :)
Babcia@Stefa
post 28.04.2008, 15:02:59
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


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
webdice
post 28.04.2008, 15:05:05
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Przeczytaj sobie to i do boju.
Go to the top of the page
+Quote Post
maniekl2
post 28.04.2008, 15:06:54
Post #3





Grupa: Zarejestrowani
Postów: 162
Pomógł: 29
Dołączył: 6.04.2008

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


tutaj mi było łatwiej zrozumieć niz na wiki :
http://www.matematyka.pisz.pl/strona/1026.html
Go to the top of the page
+Quote Post
Babcia@Stefa
post 28.04.2008, 15:07:16
Post #4





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

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


Właśnie po napisaniu tematu zauważyłem to na wikipedii, ale nie rozumiem tego... tych liczb w kształcie litery ,,E" , ,,x" i innych...
Jak ktoś może to przetłumaczyć na język polski lub język PHP to będę bardzo wdzięczny.

Pozdrawiam, Babcia@Stefa


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
Cezar708
post 28.04.2008, 15:07:34
Post #5





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


co to za problem:

  1. <?php
  2. $oceny = array(1,2,3,4,5);
  3. $wagi = array(5,4,3,2,1);
  4. $sumaWazona = 0;
  5. foreach( $oceny as $klucz => $ocena ){
  6. $sumaWazona += $ocena * $wagi[$klucz];
  7. $sumaWag += $wagi[$klucz];
  8. }
  9.  
  10. $wynik = $sumaWazona / $sumaWag;
  11. ?>


Pozdro
Go to the top of the page
+Quote Post
Babcia@Stefa
post 28.04.2008, 15:09:29
Post #6





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 smile.gif

Dzięki za Twoje chęci smile.gif

Zaraz Ci dam "pomógł" tylko odpalę ten kod haha.gif

@edit
Ładnie działa, zaraz napiszę do tego klasę i ją udostępnie dla forum. 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


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
MWL
post 1.05.2008, 09:38:38
Post #7





Grupa: Zarejestrowani
Postów: 493
Pomógł: 32
Dołączył: 14.04.2008
Skąd: Lenkowski.net

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


wszystko bardzo pieknie, ja jdnak dodał bym jeszcze mały drobiazg, czyli zaokrąglanie wyniku sredniej do powiedzmy 2 po przecinku liczby...


--------------------
Wpadaj na mój kanał o PHP. Dużo mięsa 🥩!
Go to the top of the page
+Quote Post
Babcia@Stefa
post 1.05.2008, 13:18:07
Post #8





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

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


Cytat(Mlodycompany @ 30.04.2008, 22:46:42 ) *
@Babcia@Stefa nie wiem w której jesteś klasie, ani co masz z matematyki ale chyba skoro sie bierzesz za php to powienienes wiedziec co to jest srednia wazona


1. Po ilości Twoich ostrzeżeń widzę iż nie dorosłeś do swojego wieku.
2. Średnia ważona to coś innego od średniej arytmetycznej.

Wiem co to średnia ważona, lecz nie umiem jej obliczać.
Piszesz bezsensowne posty które nic nie wnoszą.

Do moderatorów:
Zamknijcie temat, to bezsensowna dyskusja.

@edit
MWL, do tego służy funkcja round" title="Zobacz w manualu PHP" target="_manual.
Niema potrzeby wbudowywania zaokrąglania do klasy, myślę że zaokrąglić można sobię w łatwy sposób samemu.

Pozdrawiam, Babcia@Stefa

Ten post edytował Babcia@Stefa 1.05.2008, 13:20:51


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
webdice
post 1.05.2008, 20:42:57
Post #9


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Na prośbę autora temat zamykam. Zbędne posty usuwam, a autorów informuje ze kolejnym razem otrzymają ostrzeżenia.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 04:50